[Command] Linux 進程管理

工作管理(Job Control)

在進行bash的工作管理時需要注意。
1)前臺就是指你可以控制的命令行。
2)後臺就是自行運行的工作,你無法使用ctrl+c終止,但可以使用fg/bg調用。
3)後臺中執行的程序不能等待輸入。

後臺執行

在命令行後面加上&。此時,命令行仍然可以進行別的操作。此時,當任務已經完成時,會在命令行中有所顯示。但爲了讓自己更專注於命令行的操作,可以將後天運行程序的輸出和錯誤輸出重定向到一個輸出文件中。

tar -zocvf file file2 > /tmp/log.txt 2>&1 &

暫時掛起程序

在運行程序時,按下ctrl+z可以暫時掛起程序,但不終止。
例如在vi中,可以按下ctrl+z然後在命令行中操作。

jobs 查看目前後臺工作狀態

jobs [-lrs]

-l: 列出job number與命令行之外,還有PID
-r:僅列出目前在後臺run的工作
-s:僅列出正在後臺中暫停的工作
jobs
[1]    suspended (tty output)  nice -n -10 vi
[2]    suspended (tty output)  sudo nice -n -10 vi
[3]  - suspended  top | grep --color=auto 'Balltree'
[4]  + suspended  top | grep --color=auto 'Balltree'

其中,+表示最近被放到後臺中工作的號碼,-表示最後第二個被放在後臺中的工作號碼。

fg 將後臺工作拿到前臺處理

fg %number

默認取出[+]的工作。
number表示工作號碼。

bg 讓工作在後臺下的狀態變爲運行態

bg %number

運用同上。

管理後臺工作,kill

kill -signal %number

-l: 列出目前kill能夠使用的signal
-1:重新讀取參數的配置文件(reload)
-2:代表由鍵盤輸入ctrl+c同樣的操作
-9:立即強制刪除一個工作
-15:以正常的程序方式終止一項工作。
-17:以ctrl-z來暫停一個進程的執行

值得注意的是,-9表示的強制刪除,不是正常的刪除過程,可能有些文件不會被刪除。

脫機管理

如果你希望程序在你脫機之後仍然能夠正常的運行,則需要將工作放在系統後臺工作。nohup可以讓你在脫機或註銷系統後,還能夠正常讓國祚繼續進行。

nohup [..] # 在終端機前臺工作
nohup [...] & # 在終端機後臺工作

需要注意的是,nohup不支持bash內置的命令,因此你的命令必須是外部命令,例如運行一段程序等。

test.py

print 'yesy'
nohup python test.py &

此時這個python程序會在系統後臺中運行。

進程管理

進程管理是非常重要的操作。有一次我在幫別人debug時,發現有一個程序在後臺一直運行,因爲他能夠持續不斷地創建一個文件,每當我刪除這個文件時,沒過一會他又會出現。這時,就需要通過進程管理來找到這個出問題的程序,並將之kill。

ps 進程的查看

ps aux # 查看系統所有進程數據
ps -lA # 查看系統的數據
ps -l # 僅列出bash的程序

S表示這個程序所處的狀態
1)R:運行狀態
2)S:休眠狀態
3)D:不可喚醒的睡眠狀態
4)T:終止狀態
5)Z:殭屍狀態
CMD:該程序的實際命令,最能直接顯示該進程的意圖。

top 動態查看進程的變化

-d:後面接秒數,表示進程界面更新的秒數。
-p:指定某些歌PID來進行檢測

查看某個進程的使用內存也可以使用top。

top -l 1 | grep 'zsh'

pstree 描述進程樹

通過pstree能夠很快地找到進程的父進程和子進程。

pstree | grep 'zsh'
 |--= 04745 yanzexin /bin/zsh ./script.sh
 | | \-+= 57913 yanzexin -zsh
 | |   \--- 62271 yanzexin grep --color=auto zsh
 | | \--= 61334 yanzexin -zsh
 | | \--= 60544 yanzexin -zsh
 |   \--= 61954 yanzexin -zsh

進程執行的優先級

進程執行的優先級是由PRI來決定的。PRI越小,優先級越高。但用戶是無法直接修改PRI的,只能改變NI。系統會自動根據目前系統狀態來決定如何修改程序的PRI。

newPRI = oldPRI + NI

父進程的NI和子進程的NI是相同的。

nice 可以用於修改程序的NI

nice -n -5 vi &
ps -l

當我們需要進行備份工作,由於備份工作需要消耗很大的系統資源,所以此時我們希望增大程序的NI值,從而減小程序的優先級。

具體的描述見

man nice
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章