How to start a process in background and keep it
running after the console / terminal is closed on Linux and
FreeBSD
The classical way to keep a process running in background after log
out of a shell is using
screen
Anyways using
screen is not the only way to detach a running
process ,
GNU / Linux and BSDs (Free, Open, Net BSDs)
had a command
nohup which aim is to
run a command immune
to hangups, with output to a non-tty
Let's say one wants to keep track (log) constantly ICMP traffic to
a certain host with
ping command on a UNIX server / desktop
which doesn't have the
screen manager ... terminal emulation
program installed. Achieving this task is possible with
nohup cmd by backgrounding the ping process, like so:
guoi@host:~$ nohup ping google.com >ping.log & [1]
45931 hipo@host:~$ nohup: ignoring input and redirecting stderr to
stdout
Afterwards even after closing up the opened ssh session or console
(tty) / terminal (pts) on which the ping process is background
nohup prevents the ping to be sent kill SIGNAL so the
process continues running in the background.
Later on to check in real time the statistics of the continuous
ICMP ping requests tail, less, or cat can be used for example
watching the tail:
hipo@host:~$ tail -f ping.log
64 bytes from fx-in-f106.1e100.net (74.125.39.106): icmp_req=562
ttl=51 time=44.0 ms
64 bytes from fx-in-f106.1e100.net (74.125.39.106): icmp_req=563
ttl=51 time=43.8 ms
64 bytes from fx-in-f106.1e100.net (74.125.39.106): icmp_req=564
ttl=51 time=43.3 ms
64 bytes from fx-in-f106.1e100.net (74.125.39.106): icmp_req=565
ttl=51 time=43.1 ms
64 bytes from fx-in-f106.1e100.net (74.125.39.106): icmp_req=566
ttl=51 time=43.4 ms
64 bytes from fx-in-f106.1e100.net (74.125.39.106): icmp_req=567
ttl=51 time=43.6 ms
I'm using Linux / BSD for quite a lot of time and never before put
in use the
nohup cmd I guess there are more ppl who never
heard of this handy UNIX basic command. Hope I'm not the only one
who never heard about it and its useful knowledge to someone out.
Cheers ;)