Linux進程管理
1、程式是靜態概念,本身作為一種軟體資源長期儲存;而進程是程式的執行過程,它是動態概念,有一定的生命週期,是動態產生和消亡的。
2、程式和進程無一一對應關係,一個程式可以由多個進程共用;另一方面,一個進程在活動中又可順序的執行若干個任務。
父進程和子進程
1、子進程是由一個進程所產生的進程,產生這個進程的進程稱為父進程。
2、在Linux系統中,使用系統調用fork建立進程。fork複製的內容包括父進程的資料和堆棧以及父進程的終止環境。
3、父進程終止子進程自然終止。
前台進程和後台進程
前台進程
在Shell提示出打入命令後,建立一個子進程,運行命令,Shell命令等待退出,然後返回對使用者給出提示符。這條命令與Shell非同步執行,即在前台運行,使用者在它完成之前不能執行另一個命令。
後台進程
在Shell提示出打入命令,若隨後輸入一個&,Shell建立的子進程運行此命令,但不等待命令退出,而直接返回到對使用者給出提示符。這條命令與Shell同步運行,即在後台運行。後台進程必須是非互動。
進程狀態(與作業系統的分時概念有關)
1、就緒:進程已經分配到資源,但因為其他進程正在佔用CPU,所以它暫時不能運行而等待分配CPU的狀態
2、等待:因等待某種事件而暫時不能啟動並執行狀態
2、進行:進程分配到CPU,正在處理器上運行
進程狀態細化
使用者執行態:在CPU上執行使用者代碼
核心運行態:在CPU上執行核心代碼
在記憶體就緒:具備運行條件,只等發送器為它分配CPU
在記憶體睡眠:因等待某一事件的發生,而在記憶體中排隊等待
在外存就緒:就緒進程被交換到外存上繼續處於就緒狀態
在外存睡眠:睡眠進程被交換到外存上繼續等待
在記憶體暫停:因調用stop程式而進入跟蹤暫停狀態,等待其父進程發送命令
在外存暫停:出於跟蹤暫停態的進程被交換到外存上
建立態:新進程正在被建立,但尚未完畢的中間狀態
終止態:進程終止自己
常用命令
w顯示的含義
JCPU是使用者佔用的CPU的總時間,PCPU是執行某個操作時用的時間
what指使用者正在幹什麼
load average是指在過去的1、5、15分鐘內的平均負載程度,0.8以下就認為負載較輕
FROM顯示使用者從何處登陸,顯示:0表示使用者通過X window裡的終端登陸
IDLE是使用者閑置時間,一旦使用者執行任何操作,該資料就會被更新
ps Process Status
常用選項
a:顯示所有使用者的進程
u:顯示使用者名稱和啟動時間
x:顯示沒有控制終端的進程
e:顯示所有進程,包括沒有控制終端的進程
l:長格式顯示
w:寬行顯示,可以使用多個w進行加寬顯示
[root@lovelock ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1907 1903 0 80 0 - 27073 wait pts/0 00:00:00 bash
4 R 0 1929 1907 0 80 0 - 27031 - pts/0 00:00:00 ps
PID進程號,PPID父進程號,TTY進程啟動的終端,
STAT進程目前狀態:S休眠狀態,D不可中斷的休眠狀態,R運行狀態,Z僵死狀態,T停止狀態
NI 進程的優先順序
TIME進程自啟動以來佔用CPU的總時間
CMD進程的命令名
USER使用者
%CPU佔用CPU時間和總時間的百分比
%MEM佔用記憶體和系統記憶體總量的百分比
ps -le or -aux 查看所有使用者執行的進程的詳細資料
為什麼要殺死進程?
該進程佔用了過多的CPU時間
該進程鎖住了一個終端,使其他前景程式無法運行
運行了過長時間,沒有達到預期效果
產生了過多到螢幕或磁碟檔案的輸出
無法正常退出
kill 關閉進程
kill -9 進程號 強行關閉
kill -1 進程號 重啟進程
關閉圖形程式 xkill
結束所有同名進程 killall httpd
尋找服務進程號pgrep 服務名稱
關閉進程 pkil 進程名稱
/proc 中的檔案時存放在記憶體鏡像中的,不是存放在硬碟中的。
nice和renice
nice
指定程式啟動並執行優先順序
格式 nice -n command
例如 nice -5 myprogram
renice
改變一個正在啟動並執行進程的優先順序
格式 renice n pid
例如renice -5 777
優先順序的取值範圍(-20~19)
nohup使進程在使用者推出登陸以後繼續執行
進程的掛起和恢複
掛起Ctrl+Z
終止Ctrl+C
進程的恢複
恢複到前台繼續進行(fg)
恢複到後台繼續執行(bg)
查看被掛起的進程(jobs)
top進程狀態顯示和進程式控制制,每五秒鐘自動重新整理一次(動態顯示)
d 指定重新整理的時間間隔
c顯示整個命令列而不僅僅顯示命令名
u查看指定使用者的進程
k中止執行中的進程
h or ?獲得協助
r重新設定進程優先順序
s改變重新整理的時間間隔
W將當前設定寫入~/.toprc檔案中
計劃任務
at 安排作業在某一時刻執行一次
at命令的功能和格式
at [-f 檔案名稱] 時間
at -d or atrm 刪除隊列中的任務
at -l or atq查看隊列中的任務
注意命令要寫絕對路徑
限制使用者使用at的檔案
/etc/at.allow
/etc/at.deny
如果兩個檔案都不存在,則只有root才能用at命令
batch 安排作業在系統負載不重時執行一次
是at 的子命令
一般情況下負載較輕只平均負載降到0.8以下
cron 安排周期啟動並執行作業
crontab
-e 編輯
格式
分鐘 小時 天
月 星期
命令/指令碼
0 4 *
* *
把知道的具體時間添上,不知道的都填*
計劃任務執行時都產生臨時檔案,完成後會刪除
進程處理方式
standalone獨立運行 啟動後一直在系統中運行等待監聽連接埠的請求,一旦有請求,馬上給出應答,佔用的系統資源比較多,所以相應速度快webserver往往都是standalone
xinetd進程託管 互連網超級守護進程,中間監聽
atd、crond計劃任務