詳情:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html
很多時候,我們都是通過ssh用戶端連接配接Linux伺服器,再送出任務的。
有些任務可能會執行很長時間,這時候就需要把任務送出到背景執行。
如果用以下方式送出任務,在斷開ssh連接配接後,任務也會被終止:
我們的目的是:在我們斷開ssh連接配接後,任務繼續背景執行,下面介紹幾種方法。
一、使用 nohup
指令
nohup
# 日志會輸出到./nohup.log
nohup command [args] &
# 可以指定日志輸出位置
nohup command [args] >> out.log 2>&1 &
使用
nohup
送出的程序,在ssh連接配接斷開之前其父程序是目前shell程序,ssh斷開後,父程序PID變為1。
要點:
-
符号不能省略;&
-
指令執行後,最好用nohup
指令退出ssh連接配接,而不要直接關掉(我使用xshell工具,直接關掉ssh視窗,exit
送出的任務有可能一同被關掉)。nohup
二、使用 setsid
指令
setsid
setsid command [args] >> out.log 2>&1
使用
setsid
送出的程序,其父程序PID為1,是以關閉目前shell并不會影響到任務。
三、使用 screen
指令
screen
- 用
來建立一個處于斷開模式下的會話(并指定其會話名)。screen -dmS session_name
- 用
列出所有會話。screen -list
- 用
來重新連接配接指定會話。screen -r session_name
- 用快捷鍵
CTRL-a
來暫時斷開目前會話。d
screen
使用幫助請參考文檔。