天天看點

61、nohup簡介

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>