讓進程在後臺運行
阿新 • • 發佈:2017-06-18
color works 執行 div mman hup amp 能夠 and
執行一個比較耗時的命令,由於網絡不穩定導致回話斷開,命令別中斷
如果讓一個命令在後臺穩定運行?
原理:
用戶註銷或網絡斷開時,終端會收到 hup(hangup)信號,從而關閉所有子進程。
解決辦法
1、讓進程忽略 HUP 信號
2、讓進程運行在新的會話裏
方法1:
nohup 的用途就是讓提交的命令忽略 hangup 信號
nohup command &>log.txt & #此時 ppid 為 1 (init進程)
方法2:
screen : screen 提供了 ANSI/VT100 的終端模擬器,使它能夠在一個真實終端下運行多個全屏的偽終端
#建立一個處於斷開模式下的會話(並指定其會話名)
screen -dmS session name
#來列出所有會話
用screen -list
#重新連接指定會話
screen -r session name
#斷開會話
CTRL-a d
在screen中 exit 則中斷該screen
此時 bash 是 screen 的子進程,而 screen 是 init(PID為1)的子進程。那麽當 ssh 斷開連接時,HUP 信號自然不會影響到 screen 下面的子進程了
參考 :https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/
註意:該文中其他方式在腳本有輸出的時候並未測試通過!
讓進程在後臺運行