Linux後臺跑程序的方法總結

當使用ssh進行遠程代碼運行時,控制端電腦通常不能出現任何意外。然而,運行深度學習程序通常需要數小時或數天的時間,這意味着我們的IDE不能關閉。一旦出現非人爲因素(如斷電、斷網或IDE卡死關閉),遠程程序也會中斷。因此,將程序靈活地運行在服務器上,不受控制端因素的影響至關重要。

第一種方法: &

第一種方法是在命令行最後加&符號

# 執行文件
./test.py &
 
# 查看是否在後臺運行
ps -ef|grep test
 
# 後臺的程序 需要關閉時,需要kill命令停止
killall [程序名]

注意:這種方法,查看運行日誌很不方便(不推薦) 

第二種方法: nohup

nohup python -u test.py > test.log 2>&1 & 

參數說明:

 python test.py  python 運行test.py文件

 -u  :表程序不啓用緩存,也就是把輸出直接放到log中,沒這個參數的話,log文件的生成會有延遲

 >  :test.log 將輸出日誌保存到這個log中

 2>1 :2與>結合代表錯誤重定向,而1則代表錯誤重定向到一個文件1,而不代表標準輸出;

 2>&1 :&與1結合就代表標準輸出了,就變成錯誤重定向到標準輸出

 &  :代表該命令在後臺執行

查看nohup的後臺進程:

jobs

第三種方法: screen

Screen,虛擬終端管理器。可以在後臺管理終端界面,防止SSH斷開以後任務停止運行。

安裝screen

yum install -y screen

創建一個新的窗口:執行完命令後會新建一個空白窗口。需要運行的程序在該窗口運行即可

screen -S test

screen -S 爲新建指令,test爲窗口名稱

退出當前窗口

ctrl+a+d   (方法1:保留當前窗口)
screen -d  (方法2:保留當前窗口)
exit       (方法3:退出程序,並關閉窗口)

回到後臺運行程序的子窗口: screen -r id或窗口名稱 

查看當前所有的screen進程: screen -ls 

徹底退出screen進程: exit 

Ctrl+a c :創建窗口
Ctrl+a w :窗口列表
 
Ctrl+a n :下一個窗口
Ctrl+a p :上一個窗口
 
Ctrl+a 0-9 :在第0個窗口和第9個窗口之間切換
 
Ctrl+a K(大寫) :關閉當前窗口,並且切換到下一個窗口
(當退出最後一個窗口時,該終端自動終止,並且退回到原始shell狀態)
 
exit :關閉當前窗口,並且切換到下一個窗口
(當退出最後一個窗口時,該終端自動終止,並且退回到原始shell狀態)
 
Ctrl+a d :退出當前終端,返回加載screen前的shell命令狀態

 

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