原創文章,轉載告知,盜版必究
Linux在後臺運行python程序、腳本程序、可執行程序等,關閉終端仍可保持程序運行
文章目錄:
1 爲何須要後臺運行程序,場景分析
你是否遇到:在用ssh或其餘遠程鏈接工具鏈接服務器
,在終端中運行一些程序
,而後程序執行期間鏈接斷開。執行時間短的還好,若是時間比較長就比較慘了,還要從頭再來!python
以下,是我執行的訓練,訓練了十幾個小時,訓練通常終端鏈接斷開:
緩存
在講後臺運行命令,咱們先來講一下前臺運行的命令!
服務器
2 前臺運行命令 / 程序
前臺運行命令:
就是把命令直接放在
終端上執行`ssh
2.1 運行前臺命令 / 程序
示例:在前臺執行 test.py腳本
工具
import time with open('test.txt', 'w') as f: for i in range(100): print("開始寫入數據{}".format(i)) f.write("寫入數據{}\n".format(i)) time.sleep(1)
2.2 終止前臺命令 / 程序
終止前臺命令有兩種方法:spa
按 Ctrl+C 終止前臺命令
- 查看
前臺運行命令的PID
,而後用kill直接殺死進程
2.2.1 按 Ctrl+C 終止前臺命令
如上圖,直接
按Ctrl + C
便可終止前臺命令.net
2.2.2 查看前臺運行命令的PID
,而後用kill直接殺死進程
一、使用以下命令查看運行的python命令3d
ps -aux | grep python
code
二、根據命令的進程PID,使用kill命令殺死該進程orm
kill -9 4678
3 後臺運行命令 / 程序
後臺運行命令 / 程序
,主要依賴兩個命令:
nohup 命令
:不掛斷運行命令& 命令
:加在一個命令的最後
,能夠把這個命令放在後臺執行
3.1 nohup和&結合,在後臺運行命令
後臺運行命令方式:
nohup command &
一、例如,咱們把上面咱們的python test.py 命令
放在後臺運行
:
nohup python test.py &
此時即便關閉終端命令也會一直執行!
二、命令運行結果分析
- 1)將
命令掛起後臺運行
,會返回該命令的進程PID
,如我運行nohup python test.py &
返回該命令的進程號9974
- 2)按
Ctrl + C
命令命令並無終止,從下面使用ps -aux | grep python
能夠看到該進程,說明該命令已經放到後臺運行了
- 3)可是在使用
cat test.txt
裏面並無寫入任何內容,猜想可能只是先寫入緩存,等程序後臺執行完畢以後,內容就會寫入到test.txt中
3.2 使用jobs命令查看後臺運行的命令 / 程序
查看後臺運行的命令 / 程序
,使用jobs命令
jobs
jobs -l
選項能夠多顯示一個PID信息。
顯示信息說明:
- 第一列:
任務序號
(能夠用來殺死後臺運行命令),注意並非PID - 第二列:+ 號表示當前頂部任務,- 號其次任務,沒符號是其餘任務
- 第三列:
PID
(能夠用來殺死後臺運行命令)(上面例子中,默認狀況下沒有PID) - 第四列:
狀態
,四種(運行中
,已中止
,已完成
,已殺死
) - 第五列:
任務名稱
(即剛纔運行的命令
)
注意:
jobs只能查看當前終端運行的後臺命令
,若是在另一個終端下是看不到該終端開啓的後臺命令
的,如上圖。
3.3 終止後臺運行的命令 / 程序
nohup python test.py &
執行後返回兩個值:
[1] 13818
[1]
:能夠理解爲後臺運行命令的ID13818
:爲後臺運行命令的進程PID
終止命令也有兩種方式:
一、使用kill命令
和後臺運行命令的ID
kill %1
二、使用kill命令
和後臺運行命令的進程PID
kill 13818
或kill %13818
4 前臺與後臺命令的切與控制
4.1 fg命令:後臺命令調至前臺繼續運行
功能:
將後臺中的命令調至前臺繼續運行
若是後臺中有多個命令,能夠先用jobs
查看jobnun,而後用 fg %jobnum
將選中的命令調出。
4.2 Ctrl + z 命令:將一個正在前臺執行的命令放到後臺,而且處於暫停狀態
功能:
將一個正在前臺執行的命令放到後臺,而且處於暫停狀態
4.3 bg命令:將一個在後臺暫停的命令,變成在後臺繼續執行
功能:
將一個在後臺暫停的命令,變成在後臺繼續執行
若是後臺中有多個命令,能夠先用jobs
查看jobnum,而後用 bg %jobnum
將選中的命令調出繼續執行。
參考1:https://blog.csdn.net/davidhzq/article/details/102766881
參考2:https://blog.csdn.net/u013846293/article/details/74003051
參考3:https://blog.csdn.net/zxh2075/article/details/52932885
參考4:https://blog.csdn.net/liuyanfeier/article/details/62422742


♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠