進程管理和工作控制
ps,top,htop命令的使用
傳送訊號
使用kill命令可以對進程傳送訊號進行管理。管理進程時的基本原則是
1 先禮後兵。先發送訊號給進程,讓進程自己完成該做的事,若進程已不聽指揮,或失去控制,再發出強制性的訊號。這樣的好處是,讓進程在結束前有緩衝的時間做好收尾工作,如清除存檔、鎖定檔案、進程編號記錄檔案等,否則當進程不正常結束時,若在主機中殘留這些檔案,而下次要再執行程式時,可能會出現無法啟動的現象。
2 各得其所。調整進程的優先順序,使得每個進程都得到適當的安排,各項工作能如期完成。進程進入執行排程(schedule)的優先順序,成為nice值。通常nice值介於-20~20之間。nice值越少,優先順序越高。只有root許可權者才能調整介於-20~0的nice值;一般許可權的使用者,只能調整其擁有的進程的nice值在0~20之間.換言之,只有root才能調高進程的優先順序,一般使用者只能降低其進程的優先順序。nice命令和renice命令。nice運用於尚未執行的程式,renice運用在已執行的進程。
nice -n nice值 程式 指定程式執行時的優先順序為某一nice值。-20~19,但只有root可以用-20~0這個區段。若省略-n不指定nice值,則使用預設值10
renice nice值 -p PID -g 群組 -u 使用者名稱 -p -g -u三個選項,可單獨使用也可以組合使用
PRI也是進程優先順序的一種標記法,和nice值(NI)不同的是,PRI永遠以0或正數表示:PRI=NI+20
工作控制
bash的互動模式下,允許使用者暫停某一進程,稍後再恢複執行該進程。這種賦予使用者操控進程的機制,成為工作控制(jobs control)
例子
#!/bin/bash
for ((;1;))
do
sleep 10
done
整理
常用的工作控制命令
& 將指令丟到背景執行
bg 將暫停工作丟到背景 使用ctrl+z按鍵組合暫停進程,然後配合bg命令把工作丟到背景,和執行"指令 &"的效果是一樣的
fg 將暫停工作拉回到前台執行
jobs 列出工作 或jobs -l
disown 移除工作
kill 傳送訊號給進程或工作
wait 等待子進程結束,傳回最後一個命令的執行狀態
suspend 暫停目前的shell。suspend 暫停一個非login的shell,suspend -f 暫停目前的login shell。當暫停shell收到CONT訊號時才會繼續運行。
進程替換
進程替換可以讓我們把標準輸出,一次倒給許多進程作為輸入;或者由多個進程取得其輸出,然後倒給某個程式去處理。
進行替換的用法:
1 命令< (指令行) 通過裝置檔案/dev/fd/n或快取檔案,把進程的輸出倒給<左方的命令來讀取
2 > (指令行) 這是通過裝置檔案/dev/fd/n或緩衝盤,把資料提供給()中的進程去讀取