1、run a command immune(免除) to hangups
nohup Command [Arg...] [&]
nohup 指令運作由 Command 參數和任何相關的 Arg 參數指定的指令,忽略所有挂斷(SIGHUP)信号。
如果不将 nohup 指令的輸出重定向,輸出将附加到目前目錄的 nohup.out 檔案中。
2、SIGHUP信号發送的情況
SIGHUP會在以下3種情況下被發送給相應的程序:
① 終端關閉時,該信号被發送到session首程序以及作為job送出的程序(即用&符号送出的程序)。如:ssh到一台機器, 開個vim,當關閉這個ssh會話的時候,vim就會收到 SIGHUP
② session首程序退出時,該信号被發送到該session中的前台程序組中的每一個程序
③ 若父程序退出導緻程序組成為孤兒程序組,且該程序組中有程序處于停止狀态(收到SIGSTOP或SIGTSTP信号),該信号會被發送到該程序組中的每一個程序。
注意:SIGHUP被發給了session leader (即shell),然後由session leader發給jobs。
3、unix中程序組織結構為session,包含一個前台程序組及一個或多個背景程序組,一個程序組包含多個程序。一個session可能會有一個session首程序,而一個session首程序可能會有一個控制終端。
一個程序組可能會有一個程序組首程序。程序組首程序的程序ID與該程序組ID相等。與終端互動的程序是前台程序,否則便是背景程序
4、示例
1)nohup command > myout.file 2>&1 &
2)nohub ./me.sh > /dev/null 2>&1
5、守護程序,進行信号處理,使用command &後,也可以達到這個目的。
6、檢視信号
man -k signal | grep list
kill -l
參考
<a href="http://linux.die.net/man/1/nohup">http://linux.die.net/man/1/nohup</a>
【3】 記述了一個操作nohup的細節
<a href="http://os.51cto.com/art/200912/172917.htm">http://os.51cto.com/art/200912/172917.htm</a>
【4】 Catching signals
<a href="http://linux.die.net/Bash-Beginners-Guide/sect_12_01.html">http://linux.die.net/Bash-Beginners-Guide/sect_12_01.html</a>
【5】 對sighup進行了很好地讨論
<a href="http://www.cnblogs.com/coldplayerest/archive/2011/08/14/2137777.html">http://www.cnblogs.com/coldplayerest/archive/2011/08/14/2137777.html</a>