我們用遠端終端連線遠端主機的時候,有的程式要首席執行官達幾小時甚至幾天。例如晚上10點半,我在遠端終端上啟動乙個spark程式,有一些結果重定向到標準輸出,這個程式要執行10小時。第二天早上一看,遠端終端斷開了,一看程式執行結果,只執行了3小時就中斷了。
通過遠端終端啟動的程式,當遠端終端斷開會話的時候,程式也會終止。
您可以執行如下命令
nohup [您本來要執行的命令] &
例如,我本來要執行,python test.py,現在改為執行:
nohup python test.py &
這樣,我就可以關掉終端,程式會一直執行到結束(遠端主機正常的情況下)。程式本來要重定向到標準輸出的結果會重定向到當前目錄的nohup.txt。
nohup命令有個問題就是,你第二次開啟終端的時候,你無法在終端看到程式的執行結果,無法看到重定向到標準輸出的結果。解決辦法是:用screen命令,這個命令可能需要安裝,安裝命令:
sudo apt install screen
安裝完成之後,執行
screen
進入乙個"screen"後,執行
python test.py
關閉終端,程式依然在執行
重新開啟終端,執行
screen -r [screen資訊] # 可以輸入 screen -r 檢視有哪些程序,再確定字尾哪些資訊
即可看到程式執行的情況,和直接執行[python test.py]看到的結果一樣
需要掌握一些程序命令:
ps -aus | grep python
上面的命令是查詢並過濾"python"相關的程序,其他類似
kill 12345
上面的命令是殺死程序號為12345的程序 nohup 執行mysql命令 nohup命令
在應用unix linux時,我們一般想讓某個程式在後台執行,於是我們將常會用 在程式結尾來讓程式自動執行。比如我們要執行mysql在後台 usr local mysql bin mysqld safe user mysql 可是有很多程式並不想mysqld一樣,這樣我們就需要nohup命令,怎樣使...
用screen 取代nohup命令
大家在起後台服務,或者長時間執行某個指令碼的時候。是不是感覺,互動性很差,有時,想把結果直接在終端上輸出,又怕不小心關閉了終端導致程序退出?有些sshd服務還會設定連線超時,自動退出終端 現在用screen這個指令可以很好的解決跑後台服務的尷尬。命令其實超簡單的 直接在終端上輸入 screen 這個...
後台執行命令 和nohup
當 我們在終端或控制台工作時,可能不希望由於執行乙個作業而佔住了螢幕,因為可能還有更重要的事情要做,比如閱讀電子郵件。對於密集訪問磁碟的程序,你可能 希望它能夠在每天的非負荷高峰時間段執行。為了使這些程序能夠在後台執行,也就是說不在終端螢幕上執行,有幾種選擇方法可供使用。設定crontab 檔案,並...