天天看點

Linux:讓程序在背景可靠運作的幾種方法

詳情:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html

很多時候,我們都是通過ssh用戶端連接配接Linux伺服器,再送出任務的。

有些任務可能會執行很長時間,這時候就需要把任務送出到背景執行。

如果用以下方式送出任務,在斷開ssh連接配接後,任務也會被終止:

我們的目的是:在我們斷開ssh連接配接後,任務繼續背景執行,下面介紹幾種方法。

一、使用

nohup

指令

# 日志會輸出到./nohup.log
nohup command [args] &

# 可以指定日志輸出位置
nohup command [args] >> out.log 2>&1 &
           

使用

nohup

送出的程序,在ssh連接配接斷開之前其父程序是目前shell程序,ssh斷開後,父程序PID變為1。

要點:

  1. &

    符号不能省略;
  2. nohup

    指令執行後,最好用

    exit

    指令退出ssh連接配接,而不要直接關掉(我使用xshell工具,直接關掉ssh視窗,

    nohup

    送出的任務有可能一同被關掉)。

二、使用

setsid

指令

setsid command [args] >> out.log 2>&1
           

使用

setsid

送出的程序,其父程序PID為1,是以關閉目前shell并不會影響到任務。

三、使用

screen

指令

  • screen -dmS session_name

    來建立一個處于斷開模式下的會話(并指定其會話名)。
  • screen -list

    列出所有會話。
  • screen -r session_name

    來重新連接配接指定會話。
  • 用快捷鍵

    CTRL-a

    d

    來暫時斷開目前會話。

screen

使用幫助請參考文檔。

繼續閱讀