一、進程
1.內核的作用:進程的管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等。然后其中進程的管理是其中重要的一塊。
2.進程跟程序:進程和程序是同一事物的不同時刻,進程是運行中的程序的一個副本,是被載入內存的一個指令集合。進程有它自己的進程ID號(PID)來標識。
3.task struct是Linux內核存儲進程信息的數據結構格式,而多個task struct組成的鏈表就形成task list
4.所有的進程都是由父子關系組成的,init是第一個進程,其他的進程都是該進程的子進程,子進程都是由父進程創建的,fork(),clone()
5.特性:
(1)子進程都是由父進程創建的
(2)CoW
(3)存在生命周期
(4)UID、GID和SELinux語境決定對文件系統的存取和訪問權限,通
常從執行進程的用戶來繼承
6.進程的五種基本狀態及轉換
(1)五種狀態:
創建狀態:進程在創建時需要申請一個空白PCB,向其中填寫控制和管理進程的信息,完成資源分配。如果創建工作無法完成,比如資源無法滿足,就無法被調度運 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?行,把此時進程所處狀態稱為創建狀態
就緒狀態:進程已經準備好,已分配到所需資源,只要分配到 ?????????CPU就能立即運行
執行狀態:進程處于就緒狀態被調度后,進程進入執行執行狀態
阻塞狀態:正在執行的進程由于某些事件(I/O請求,申請緩存區失敗)而暫時無法運行,進程受到阻塞。在滿足請求時進入就緒狀態等待系統調用。
終止狀態:進程結束,或出現錯誤,或被系統終止,進入終止狀態。無法再執行
7.狀態之間轉換六種情況
(1)運行–>就緒:1,主要是進程占用CPU的時間過長,而系統分配給該進程占用CPU的時間是有限的;2,在采用搶先式優先級調度算法的系統中,當有更高優先級的進程要 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 運行時,該進程就被迫讓出CPU,該進程便由執行狀態轉化為就緒狀態。
(2)就緒–>運行:運行的進程的時間片用完,調度就轉到就緒狀態。
(3)運行–>阻塞:正在執行的進程因發生某等待事件而無法執行,則進程由執行狀態變為阻塞狀態,如發生了I/O請求。
(4)阻塞–>就緒:進程所等待的事件已經發生,就進入了就緒隊列。
8.進程優先級:
為了提高系統的效率,特意引用了隊列,每一個隊列代表一種優先級,將所有的進程都分到隊列中。
(1)系統優先級:范圍是0—139,共有140個。數字越小,優先級越高。共有140個運行隊列和過期隊列
(2)pri優先級:與系統優先級類似,其范圍也是0—139,數字越大,優先級越高
(3)實時優先級(realtime):其范圍為0—99,值越大,優先級越高
(4)nice優先級:其范圍為-20—19,對應優先級100—139,其值越小,優先級越高,-20優先級最高
9.進程內存:
(1)頁框是用來存儲頁面數據,存儲Page 大小4k
(2)LRU:近期最少使用算法,用來釋放內存
10.進程類型:
(1)守護進程:在系統引導過程中啟動的進程,和終端無關進程,開機自動加載,啟動
(2)前臺進程:跟終端相關,通過終端啟動的進程
(3)兩者可相互轉化,相互協調
11.進程狀態:
(1)運行態:running
(2)就緒態:ready
(3)睡眠態:
可中斷:interruptale
不可中斷:uninterruptable
(4)停止態:stopped,暫停內存,但不會被調用,除非手工啟動
(5)僵死態:zombie,結束進程,父進程結束前,子進程不關閉
二、進程管理工具
Pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup
1.pstree 顯示進程樹
(1)pstree -h 高亮顯示進程
(2)pstree -p 顯示進程號
2.ps 顯示進程的狀態,將當時的進程以快照的方式顯示出來,不跟蹤顯示進程的變化,默認顯示出當前終端中的進程
ps命令支持三種格式的選項:UNIX格式,BSD格式,GNU格式
(1)BSD格式,不加橫線
ps a 顯示所有終端中的進程
ps x 顯示與終端無關的進程
ps u 顯示進程所有者的信息
ps aux顯示所有終端中與終端無關的進程所有者的信息
ps f 顯示進程樹,等于–forest
ps o 選擇定制的信息顯示
ps L 顯示支持的屬性
(2)UNIX格式,加一個橫線
ps -C+命令 指定命令 可以使用多個命令,用,隔開
ps -L 顯示線程
ps -e顯示所有進程,相當于-A
ps -f 顯示完整格式程序信息
ps -F 顯示更完整的進程信息
ps -ef 以完整的格式顯示進程信息
ps -H 以進程層級格式顯示進程相關信息
ps -u指定有效的用戶
ps -U指定真正的用戶
ps -p pid顯示屬于pid的子進程
3.搜索進程
(1)ps 選項 |其他命令
(2)pgrep
pgrep -t 顯示與終端相關的進程
pgrep -l 顯示進程名
pgrep -a 顯示完整格式的進程名
pgrep -P pid 顯示指定程序的子進程
4.uptime 顯示當前時間,系統已啟動的時間、當前上線人數,系統平均負載
系統平均負載:指在特定時間間隔內運行隊列的平均進程數
通常每個CPU內核的當前活動進程數不大于3,那么系統的性能良好,如果每個CPU內核的任務數大于5,那么此主機的性能有嚴重問題
5.top
6.vmstat命令:查看虛擬內存信息
Procs:
r:可運行進程的個數,和核心數有關
b:處于不可中斷睡眠態的進程個數
Memory:
Swpd:交換內存的使用總量
Free:空閑物理內存總量
Buffer:用于buffer的內存總量
Cache:用于cache的內存總量
Swap:
Si:從磁盤交換進內存的數據速率
So:從內存交換至磁盤的數據速率
io:
bi:從塊設備讀入數據到系統的速率
bo:保存數據至塊設備的速率
System:
in:interrupts ?中斷速率,包括時鐘
cs:context switch 進程切換速率
選項:-s:顯示內存的統計數據
7.iostat:統計CPU和設備IO信息
8.dstat命令:系統資源統計,代替vmstat,iostat
-C: 顯示cpu相關信息
-D:顯示disk相關信息
-g:顯示page相關統計數據
-m:顯示memory相關統計數據
-n:顯示network相關統計數據
-p:顯示process相關統計數據
-r:顯示io請求相關的統計數據
-s:顯示swapped相關的統計數據
9.iotop:iotop命令是一個用來監視I/O使用狀態的類top類工具。
第一行:Read和Write速率總計
第二行:實際的Read和Write速率
第三行:
10.信號:
(1)查看所有的信號:kill -l
(2)幾種重要的信號:
- 1=SIGHUP=HUP: ?無須關閉進程而讓其重新讀配置文件
- 2=SIGINT=INT: ??中止正在進行的進程,相當于Crtl+c
- 9=SIGKILL=KILL: ??強制殺死正在運行的進程
d.15=SIGTERM=TERM:終止正在進行的進程
(3)殺死進程
按PID:kill [-SIGNAL] pid…
按名稱:
按模式:
三、Linux的作業控制:
1作業分為:
前臺作業:通過終端啟動,且啟動后一直占據終端
后臺作業:可通過終端啟動,但啟動后就轉入到后臺
2讓作業運行于后臺
運行中的作業: Ctrl+z
尚未啟動的作業:COMMAND&
3.查看當前終端所有作業:jobs
4.作業控制:
(1)fg :把指定的后臺作業調回前臺
(2)bg:讓送往后臺的作業在后臺繼續運行
(3)kill:終止指定的作業
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90310