Nohup: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
=External=
=External=


* nohup on wikipedia http://en.wikipedia.org/wiki/Nohup
* http://en.wikipedia.org/wiki/Nohup
* https://www.digitalocean.com/community/tutorials/how-to-use-bash-s-job-control-to-manage-foreground-and-background-processes


=Internal=
=Internal=

Revision as of 13:16, 31 July 2017

External

Internal

Overview

nohup is a POSIX command to ignore the HUP (hangup) signal. The HUP signal is, by convention, the way a terminal warns dependent processes of logout.

nohup command &

stdout and stderr output that would normally go to the terminal goes to a file called ./nohup.out.

The name of the output files can be modified by redirecting the output streams inside the nohup command:

nohup command > my-stdout-file.out 2> my-stdout-file.out &

This command won't produce the default nohup.out file, but two my-stdout-file.out and my-stdout-file.out files.

Note that nohupping backgrounded jobs is typically used to avoid terminating them when logging off from a remote SSH session.

A different issue that often arises in this situation is that ssh is refusing to log off ("hangs"), since it refuses to lose any data from/to the background job(s).

This problem can be overcome by redirecting all three I/O streams:

nohup ./myprogram > foo.out 2> foo.err < /dev/null &

Solution Used to Background gld Remotely

...

if ${background}; then
    nohup ${command} 1>./gld.log 2>&1 < /dev/null &
    pid=$!
    echo "gld launched in background (pid ${pid}), use gld stop|status to interact with it"
    sleep 1
else
...
fi