執(zhí)行中的程序稱作進程。當程序可以執(zhí)行文件存放在存儲中纯出,并且運行的時候蚯妇,每個進程會被動態(tài)得分配系統(tǒng)資源、內(nèi)存暂筝、安全屬性和與之相關的狀態(tài)箩言。可以有多個進程關聯(lián)到同一個程序乖杠,并同時執(zhí)行不會互相干擾分扎。操作系統(tǒng)會有效地管理和追蹤所有運行著的進程澄成。
為了管理這些進程胧洒,用戶應該能夠:
●查看所有運行中的進程
●查看進程消耗資源
●定位個別進程并且對其執(zhí)行指定操作
●改變進程的優(yōu)先級
●殺死指定進程
●限制進程可用的系統(tǒng)資源等
Linux提供了許多命令來讓用戶來高效掌控上述的操作。接下來墨状,一個一個的來講解下卫漫。
1、PS
'ps'是Linux 中最基礎的瀏覽系統(tǒng)中的進程的命令肾砂。能列出系統(tǒng)中運行的進程列赎,包括進程號、命令镐确、CPU使用量包吝、內(nèi)存使用量等饼煞。下述選項可以得到更多有用的消息。
ps?-a?-?列出所有運行中/激活進程
ps?-ef?|grep?-?列出需要進程
ps?-aux?-?顯示進程信息诗越,包括無終端的(x)和針對用戶(u)的進程:如USER,?PID,?%CPU,?%MEM等
2砖瞧、pstree
linux中,每一個進程都是由其父進程創(chuàng)建的嚷狞。此命令以可視化方式顯示進程块促,通過顯示進程的樹狀圖來展示進程間關系。如果指定了pid了床未,那么樹的根是該pid竭翠,不然將會是init(pid: 1)。
3.top
‘top’是一個更加有用的命令薇搁,可以監(jiān)視系統(tǒng)中不同的進程所使用的資源斋扰。它提供實時的系統(tǒng)狀態(tài)信息。顯示進程的數(shù)據(jù)包括PID啃洋、進程屬主褥实、優(yōu)先級、%CPU裂允、%memory等损离。可以使用這些顯示指示出資源使用量绝编。
4.htop
htop與top很類似僻澎,但是htop是交互式的文本模式的進程查看器。它通過文字圖形化地顯示每一個進程的CPU和內(nèi)存使用量十饥、swap使用量窟勃。使用上下光標鍵選擇進程,F(xiàn)7和F8改變優(yōu)先級逗堵,F(xiàn)9殺死進程秉氧。Htop不是系統(tǒng)默認安裝的,所以需要額外安裝蜒秤。
5.nice
通過nice命令的幫助汁咏,用戶可以設置和改變進程的優(yōu)先級。提高一個進程的優(yōu)先級作媚,內(nèi)核會分配更多CPU時間片給這個進程攘滩。默認情況下,進程以0的優(yōu)先級啟動纸泡。進程優(yōu)先級可以通過top命令顯示的NI(nice value)列查看漂问。
進程優(yōu)先級值的范圍從-20到19。值越低,優(yōu)先級越高蚤假。
nice?<優(yōu)先值>?<進程名>?-?通過給定的優(yōu)先值啟動一個程序
上述命令例子中栏饮,可以看到‘top’命令獲得了-3的優(yōu)先值。
6.renice
renice命令類似nice命令磷仰。使用這個命令可以改變正在運行的進程優(yōu)先值抡爹。注意,用戶只能改變屬于他們自己的進程的優(yōu)先值芒划。
renice?-n?-p?-?改變指定進程的優(yōu)先值
初始優(yōu)先值為0的3806號進程優(yōu)先值已經(jīng)變成了4冬竟。
renice?-u?-g?-?通過指定用戶和組來改變進程優(yōu)先值
上述例子中,用戶為‘mint’的所有進程優(yōu)先值變?yōu)椤?3’民逼。
7.kill
這個命令用于發(fā)送信號來結(jié)束進程泵殴。如果一個進程沒有響應殺死命令,這也許就需要強制殺死拼苍,使用-9參數(shù)來執(zhí)行笑诅。注意,使用強制殺死的時候一定要小心疮鲫,因為進程沒有時機清理現(xiàn)場吆你,也許寫入文件沒有完成。如果我們不知道進程PID或者打算用名字殺死進程時候俊犯,killall就能派上用場妇多。
kill?
kill?-9?
killall?-9?-?殺死所有擁有同樣名字的進程
如果你使用kill,你需要知道進程ID號燕侠。pkill是類似的命令者祖,但使用模式匹配,如進程名绢彤,進程擁有者等七问。
pkill?<進程名>
8.ulimit
該命令用于控制系統(tǒng)資源在shell和進程上的分配量。對于系統(tǒng)管理員是最有用的茫舶,可以管理重度使用和存在性能問題的系統(tǒng)械巡。限制資源大小可以確保重要進程持續(xù)運行,其他進程不會占用過多資源饶氏。
ulimit?-a?-?顯示當前用戶關聯(lián)的資源限制
-f?:最大文件尺寸大小
-v?:最大虛擬內(nèi)存大屑ズ摹(KB)
-n?:增加最大文件描述符數(shù)量
-H?:改變和報告硬限制
-S?:改變和報告軟限制
瀏覽ulimit man頁面獲取更多選項。
9.w
w 提供當前登錄的用戶及其正在執(zhí)行的進程的信息嚷往。顯示信息頭包含信息葛账,如當前時間、系統(tǒng)運行時長皮仁、登錄用戶總數(shù)、過去的1,5贷祈,15分鐘內(nèi)的負載均衡數(shù)趋急。
基于這些用戶信息,用戶在終止不屬于他們的進程時要小心势誊。
who是類似命令呜达,提供當前登錄用戶列表、系統(tǒng)啟動時間粟耻、運行級別等查近。
whoami 命令輸出當前用戶ID
10.pgrep
pgrep的意思是"進程號全局正則匹配輸出"。該命令掃描當前運行進程挤忙,然后按照命令匹配條件列出匹配結(jié)果到標準輸出霜威。對于通過名字檢索進程號是很有用。
pgrep?-u?mint?sh
這個命令將會顯示用戶為‘mint’和進程名為‘sh’的進程ID册烈。
11.fg , bg
有時戈泼,命令需要很長的時間才能執(zhí)行完成。對于這種情況赏僧,我們使用‘bg’命令可以將任務放在后臺執(zhí)行大猛,而用‘fg’可以調(diào)到前臺來使用。
我們可以通過‘&’在后臺啟動一個程序:
find?.?-name?*iso?>?/tmp/res.txt?&
一個正在運行的程序也可以通過“CTRL+Z”和“bg”命令組合放到后臺運行淀零。
find?.?-name?*iso?>?/tmp/res.txt?&?-?啟動一個程序
ctrl+z?-?掛起當前執(zhí)行程序
bg?-?將程序放到后臺運行
我們可以使用‘jobs’命令列出所有后臺進程挽绩。
jobs
使用‘fg’命令可以將后臺程序調(diào)到前臺執(zhí)行。
fg?%進程id
12.ipcs
ipcs命令報告進程間通信設施狀態(tài)驾中。(共享內(nèi)存琼牧,信號量和消息隊列)
用-p參數(shù)聯(lián)合-m、-s或-q使用哀卫,可以獲得相關的進程間通信的進程ID巨坊。
ipcs?-p?-m
下面屏幕截圖列出了最近訪問了共享內(nèi)存段的進程的創(chuàng)建者的ID和進程ID。
總結(jié)
總之 此改,這些命令可以幫助管理員修復問題和改善性能趾撵。同樣作為一名普通用戶也需要解決進程出現(xiàn)的問題。所以共啃,熟悉如此繁多的命令占调,從能有效管理進程是行之有效。