當使用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命令狀態