Linux環境下後臺一直運行程序不退出的方法

有的時候我們需要長時間地運行background programs,而且不希望程序退出,今天我們要來看一下如何在linux環境下來實現這個目的。

我的演示環境是Ubuntu 16.04 LTS

首先第一種辦法,使用系統命令:

$ nohup command > /dev/null 2>&1 &

其中command是我們要運行的命令,需要我們替換上去。(比如我們要運行一個名爲EagleJobDispatcher的程序,那麼以上命令就是

$ nohup ./EagleJobDispatcher > /dev/null 2>&1 &
  1. nohup的意思是即使登出也不會終止該進程。

  2. > /dev/null意思是將stdout引導到/dev/null這個不存在的設備(所以程序的輸出將不會被記錄)。

  3. 2>&1的意思是stderr也引導至stdout,而stdout已經被引導至/dev/null。我們可以用一個文件路徑來替換&1,用以保存程序的錯誤信息,比如2>/tmp/errorLogs

  4. 最後的&表示我們希望這個程序在後臺運行。


第二種方法,我們需要使用screen這個程序。首先我們需要安裝screen

$ sudo apt-get install screen

完成後我們輸入screen,回車後進入screen的提示信息後再按回車來進入。接下來我們輸入我們要運行的命令:

$ ./EagleJobDispatcher

當程序開始運行後,我們輸入Ctrl + A,然後按D鍵來detach,完成後screen會脫離:

[screen is terminating]

然後我們可以輸入

$ screen -ls

來查看我們運行的進程:

$ screen -ls
There is a screen on:
        29478.pts-8.localhost   (08/25/2017 08:35:16 AM)        (Detached)
1 Socket in /var/run/screen/S-root.

screen的強大在於我們可以再回到運行的程序裏,而第一種方法是不可以的:

$ screen -r 29478.pts-8.localhost

現在就算我們關閉terminal我們的程序依然會持續運行,如果需要關閉我們再通過以上命令回到程序退出即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章