在伺服器上長時間執行程式的一些基本命令

2021-08-14 12:00:00 字數 1932 閱讀 3064

tmux是強大的終端復用工具,在伺服器上長期執行程式,tmux是必備的工具。其好處當我們退出伺服器時(主動退出或因網路連線不好而斷開),使用tmux可以儲存之前的工作狀態。另外,當我們強制或主動斷開伺服器連線時,如果長時間要跑的程式還在執行,程式很可能會自動停止執行。使用tmux就可以避免這樣的情況發生,只要不是程式自身出錯,不管我們是否連上伺服器,程式都會一直在伺服器上執行。

常用的tmux指令如下:

$ tmux new

-s session-name

session-name為指定的新會話的名稱,新會話相當於完全「備份」了乙份終端。

接入第乙個可用的會話,使用指令:

$ tmux a
接入指定會話名稱的會話,使用指令:

$ tmux a -t session-name
斷開當前連線的會話,會回到原始終端,但在該會話下執行的程式並不會停止,工作狀態也會完全保留,這也是tmux的一大優勢。

$ tmux detach
或者使用快捷鍵:

$ 

ctrl-b d

殺死會話會將會話完全刪除,此後再也無法接入該會話,狀態和程式也不再保留。

$ tmux kill-session

-t session-name

開啟多個會話是伺服器中經常有的操作,尤其是當我們同時執行多個程式,或者有多個任務需要處理的時候,顯示所有會話的指令如下:

$ tmux ls
或者使用快捷鍵:

$ 

ctrl-b s

使用top命令可以檢視當前伺服器執行的所有程序,以及cpu和記憶體佔用量等,注意top是動態顯示的:

$ top
使用jobs指令可以檢視當前終端正在進行的程序:

$ jobs
使用jobs -l可以顯示程序的pid,方便對程序操作:

$ jobs -l
使用kill指令可以殺死指定的程序,也可用於對程序的其他操作:

$ kill -9

pid

長時間執行的程式盡量在後台執行,即命令末尾加&:

$ python xx.py &
前台的程式可以使用ctrl-z暫停(中止),使用jobs命令可以看到程序處於stop狀態。與之相對的是,使用ctrl-c是直接殺死程序(終止),相當於kill,程序會被殺死並消失。

使用bg可以將前台指令移到後台執行:

$ bg
使用fg可以將後台命令移到前台執行:

$ fg
使用gpu訓練時,視訊記憶體的檢視十分有必要,可以用來確定當前的batch大小是不是合適,以及共享的gpu上是否已經有其他程式在執行。使用nvidia-smi檢視視訊記憶體的使用情況(注意中間沒有空格):

$ nvidia-smi
程式執行的資訊以及錯誤資訊需要我們及時儲存在檔案中,方便之後的檢視和分析,推薦重定向和tee命令。

tee命令可以使程式正常向螢幕列印資訊,與此同時將列印的資訊儲存在指定檔案中:

$ python xx.py

2>&1 | tee ***.out

使用重定向可以將標準輸出(1)和標準錯誤(2)同時定向到檔案中,此時螢幕不再列印資訊,因為標準輸出已經被重定向,不再是螢幕:

$ python xx.py

1> ***.out

2>&1

Linux中長時間執行程式的方法

一 場景 如果臨時有乙個命令需要長時間執行,比如 python hello.py 什麼方法能最簡便的保證它在後台穩定執行呢?解決方法 當使用者登出 logout 或者網路斷開時,終端會收到 hup hangup 訊號從而關閉其所有子程序。因此,我們的解決辦法就有兩種途徑 要麼讓程序忽略 hup 訊號...

在伺服器後台執行程式

用pycharm在伺服器上做深度學習訓練時,要一直開著電腦,否則連線就會中斷,或者因為斷網或者掉線等問題導致訓練中斷。用screen將任務掛在後台執行,就可以避免上述情況的出現了 screen ls the program screen is currently not installed.you ...

在伺服器上用mysql的一些問題

1.給mysql新增遠端訪問的步驟 預設情況下,mysql之允許本地登入,需要修改 etc mysql my.cnf檔案 注釋這一行 bind address 127.0.0.1 bind address 127.0.0.1 對於需要遠端登入的使用者執行如下命令 mysql grant all pr...