之前寫了一篇爬取Bing首頁的爬蟲,每天都需要運作爬取,這馬上要回家過年了,電腦又不是每天都開着了,于是乎想着在雲伺服器上運作python程式,這是之前寫的在Centos7雲伺服器中下載下傳并安裝的Anaconda3 Python,現在就想着怎麼讓程式挂在背景運作了,好記性不如爛筆頭,找資料總結記錄一下。
速查菜單
指令 | 說明 |
---|---|
& | 将目前指令以背景的形式運作 |
nohup | 隔離終端挂斷信号,是指令的字首 |
ctrl+z | 将前台任務轉背景并當機 |
bg | 将背景當機的任務再次運作起來 |
fg | 将背景任務重新轉前台執行 |
jobs | 檢視在背景運作的任務清單 |
ps | 檢視正在運作的程序資訊 |
kill | 殺掉某個程序 |
詳解
假設現在有一個名為main.py的python程式,且該程式的權限為可執行的
1. &
背景運作,但關閉視窗後,也會終止運作程式
2. nohup
在1.的基礎上,在指令的前面加上nohup,可實作不挂斷的運作
這裡出現了下面這個提示,不用管它,直接敲回車
#nohup:忽略輸入并将stderr重定向到stdout
nohup: ignoring input and redirecting stderr to stdout
3. ctrl+z
将前台的程式轉入背景并暫停運作
4. bg
将背景當機的任務再次運作起來
注意:這裡的id是通過jobs指令檢視得到的
5. fg
将背景程序轉至前台運作
注意:這裡的id是通過jobs指令檢視得到的
6. jobs
檢視目前終端背景運作的任務,直接輸入指令就行
7. ps
檢視目前的程序,直接輸入指令就行
與jobs的差別:jobs隻能檢視目前終端裡的程序,ps可以檢視其他終端中的程序,ps有以下參數
ps -aux|grep “text.sh” a:(all)顯示所有程序 u :以使用者為主的格式 x : 所有的程序不以終端區分
常使用以下這種格式,解釋說明:e:表示列出所有程序,f:表示輸出完整格式,grep hzqtest:表示過濾篩選“python”關鍵字。
ps -ef |grep python
8. kill
先用jobs檢視程序,獲得它的jobsID,注意在那個%是需要的
kill -9 %jobsID
先用ps檢視程序,獲得它的PID
kill -9 PID
非常感謝以下博文
參考博文:
在linux背景運作腳本指令和程式的方法大全
Linux 下背景運作程式,檢視和關閉背景運作程式
Linux前背景運作指令及切換
Linux下程式背景運作:nohup和&