通過終端遠程操作服務器時,難免要使特定進程處於持續運行狀態,例如深度學習訓練網絡參數,但又不可能長時間不間斷操作終端,我們希望將進程保持后台持續運行,這里提供兩個思路:(1)docker 內運行,退出但不終止程序;(2)nohup 命令與 & 結合。
這里只講第二個思路:nohup 命令與 & 結合。
舉個例子,我們需要保持 test.py 程序的持續運行(用於長時間訓練神經網絡),並且將控制台輸出重定向到日志文件中,那么如下命令可以輕松辦到:
nohup python test.py > log.txt &
在使用 nohup 后台運行命令之后,需要使用 exit 正常退出當前賬戶,這樣才能更好地保證命令一直在后台運行。
上述進程保持持續運行一段時間后,若想停止運行,即殺掉該進程,有如下操作:
ps -ef | grep python
通過用戶名以及程序名等信息找到對應的 PID,使用 kill 命令強制終止進程(若PID為2223):
kill -s 9 2223
由此便完成了對進程的強制結束。kill 命令實際上是很常見的 linux 命令,在很久之前也就接觸過,這里作為總結和回顧,也一並作了相應介紹。