Linux學習(nohup)

在使用伺服器時,我往往需要開著終端才能跑程式,一旦連接出了問題,這個程式將重新進行。這裡將介紹Linux下的一大神器nohup用於後臺執行。

nohup命令

nohup指不斷地執行,no hang up的所寫

nohup在不規定的情況下,所有輸出內容會到nohup。out中

關於Python的後臺執行

nohup python -u main。py > train。log 2>&1 &

2>&1

記住: 0表示stdin標準輸入,使用者鍵盤輸入的內容 1表示stdout標準輸出,輸出到顯示屏的內容 2表示stderr標準錯誤,報錯內容

2>&1是一個整體,>左右不能有空格,即將錯誤內容重定向輸入到標準輸出中去

整體意義及&

&為後臺執行

程式碼中的>表示清空後新增,如果是>>則是追加 注意這裡之所以要2>&1,在1前面有一個&是為了區分這裡的1表示的是stdout標準輸出,而不是1這個檔案

Linux後臺執行

注意:實際讓程式在後臺執行的是&命令,而不是nohup, nohup的作用是在讓程式在關閉視窗(切換SSH連線)的時候程式還能繼續在後臺執行。(退出賬戶依舊執行相應的程序) 對於後臺執行時,我們有時需要一些其他操作: (1)Ctrl+z 可以讓一個正在前臺執行的命令放到後臺,並且處於暫停狀態 (2)bg %jobnumber:將一個在後臺暫停的命令,變成後臺繼續執行 (3)fg %jobnumber:將後臺中的命令調至前臺繼續執行。如果後臺中有多個命令,可以用fg %jobnumber將選中的命令調出 (4)Ctrl+c 終止前臺命令 (5)jobs:檢視當前有多少在後臺執行的命令(注意,一旦退出了賬戶,重新連線上後,jobs將找不到先前的任務,但是那個任務確實存在,在後臺進行,可以透過ps -ef|grep python 檢視或ps -ef)

那麼如何終止後臺執行程序呢? 1。 top:檢視後臺程序號 2。 kill -9 PID:殺死對應PID的程序

參考文獻

Python後臺執行—nohup及2>&1詳解