Closing telnet session without terminating the foreground process
by Frederick Tybalt on Nov.04, 2008, under Unix
Finally have found out a way to terminate the telnet session with out killing the foreground process which is running. Anyone struck with the above situation can follow this 🙂
Assume a script “script1” is running in the foreground for a long time and this script needs to be retained even if the telnet session is closed. Here are the steps which needs to be followed.
- On the telnet screen press <CTRL + Z>. This will temporarily stop the script or process to run.
$ ./script1.ksh [1] + Stopped (SIGTSTP) ./script1.ksh
- Type in the command “bg” to run the process in background
$ bg [1] ./script1.ksh&
- Identify the session process ID. This can be done by giving the “ps” command in the prompt.
$ ps PID TTY TIME CMD 4882522 pts/7 0:00 ps 4984988 pts/7 0:00 -sh
- Identify the PID of the script which is is shifted to background. In our case “script1” This can be done by ps command piped with grep as below.
$ ps -ef | grep script1.ksh user1 4399240 4984988 0 08:57:49 pts/7 0:00 grep script1.ksh user1 5029960 4829226 0 07:57:23 - 0:00 /usr/lpp/ars/bin/script1.ksh
- Now with all the PID’s collected, use “nohup” command
$ nohup -p 4984988 $ nohup -p 5029960
This will make the script or process not to be terminated even if the telnet session is closed.
NB: The telnet session process 4984988, will be running at the background unless it is killed.
Courtesy: Santhosh Fabian
November 7th, 2008 on 2:34 am
God man … We’re in 2008 who use telnet ???
And you can do nohup command &
November 7th, 2008 on 3:24 am
The nohup with fedora does not support -p.
November 7th, 2008 on 5:43 am
If you use ‘ssh’ instead of telnet, you can use the ‘screen’ command for that. In order to start a script in the background use:
$ screen
//A new screen is created
$ ./script.sh
//Press Ctrl+A+D in order to detach the session, script still continues
In order to monitor the script later on, use screen command with -ls and -r options, such that:
To list all the screens:
$ screen -ls
To re-attach a previously started screen use:
$ screen -r #screen-id
November 7th, 2008 on 8:39 am
@Julien,
This holds good with SSH too..
@uygar,
Good… This too works…
August 2nd, 2009 on 6:26 pm
Hi,
I know it’s been a long time since the last reply,
Is there a way to put a script automatically in the background from the get go?
Start the script (it is put automatically in the background) and then close the telnet session with nothing else to do?
Thanks for your time.
August 22nd, 2009 on 6:47 pm
@karlberg74,
This can be done directly, here we go
$ nohup script1.ksh &
This will directly run the script at background and the script will be alive even if the session is closed