Ive seen tons of examples where a &
follows the end of a command string, but I can't seem to find an explanation on what it does. It's not even in nohup
's man
page. Is this a shell thing?
Either using &
or not, I find that any process ran with nohup
seems to exhibit immunity to any hangup signal.
From the bash manpage:
So yes, it's a shell thing, and can be used with any command. It essentially returns control to you immediately and allows the command to complete in the background. This is almost always used with
nohup
because you typically want to exit the shell after starting the command.Using the ampersand (&) will run the command in a child process (child to the current bash session). However, when you exit the session, all child processes will be killed.
using nohup + ampersand (&) will do the same thing, except that when the session ends, the parent of the child process will be changed to "1" which is the "init" process, thus preserving the child from being killed.
Yes, it's a shell thing--it runs the command in the background so you don't have to wait for the current command to return before issuing more commands.