Linux 查看某一進(jìn)程的占用CPU的Cacti 腳本. 以Mysqld為例:
[root@localhost ~]# more top.sh
#!/bin/bash
top -n 1 > /root/top.log
if grep -q mysqld /root/top.log
then cpu=`grep "mysqld" /root/top.log | gawk '{ print $9 }'`
echo $cpu
else
echo "0"
fi
exit
Linux進(jìn)程管理命令詳解(ps和top)
1.ps命令
作用:ps命令主要查看系統(tǒng)中進(jìn)程的狀態(tài)。
格式:ps [選項(xiàng)]
主要選項(xiàng)如下。
-A:顯示系統(tǒng)中所有進(jìn)程的信息。
-e:顯示所有進(jìn)程的信息。
-f:顯示進(jìn)程的所有信息。
-l:以長(zhǎng)格式顯示進(jìn)程信息。
-r:只顯示正在運(yùn)行的進(jìn)程。
-u:顯示面向用戶(hù)的格式(包括用戶(hù)名、CPU及內(nèi)存使用情況等信息)。
-x:顯示所有非控制終端上的進(jìn)程信息。
-p:顯示由進(jìn)程ID指定的進(jìn)程的信息。
-t:顯示指定終端上的進(jìn)程的信息。
說(shuō)明:要對(duì)進(jìn)程進(jìn)行監(jiān)測(cè)和控制,首先要了解當(dāng)前進(jìn)程的情況,也就是需要查看當(dāng)前進(jìn)程。ps命令就是最基本、也是非常強(qiáng)大的進(jìn)程查看命令。根據(jù)顯示的信息可以確定哪個(gè)進(jìn)程正在運(yùn)行、哪個(gè)進(jìn)程被掛起、進(jìn)程已運(yùn)行了多久、進(jìn)程正在使用的資源、進(jìn)程的相對(duì)優(yōu)先級(jí),以及進(jìn)程的標(biāo)志號(hào)(PID)。所有這些信息對(duì)用戶(hù)都很有用,對(duì)于系統(tǒng)管理員來(lái)說(shuō)更為重要。使用"ps -aux"命令可以獲得終端上所有用戶(hù)的有關(guān)進(jìn)程的所有信息,下面結(jié)合圖講解進(jìn)程的基本信息。
[root@Linux ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2064 624 ? Ss Sep27 0:03 init [3]
root 2 0.0 0.0 0 0 ? S< Sep27 0:03 [migration/0]
root 3 0.0 0.0 0 0 ? SN Sep27 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< Sep27 0:00 [watchdog/0]
root 5 0.0 0.0 0 0 ? S< Sep27 0:04 [migration/1]
root 6 0.0 0.0 0 0 ? SN Sep27 0:00 [ksoftirqd/1]
root 7 0.0 0.0 0 0 ? S< Sep27 0:00 [watchdog/1]
root 8 0.0 0.0 0 0 ? S< Sep27 0:05 [migration/2]
root 9 0.0 0.0 0 0 ? SN Sep27 0:00 [ksoftirqd/2]
root 10 0.0 0.0 0 0 ? S< Sep27 0:00 [watchdog/2]
圖中第二行代碼中,USER表示啟動(dòng)進(jìn)程用戶(hù)。PID表示進(jìn)程標(biāo)志號(hào)。%CPU表示運(yùn)行該進(jìn)程占用CPU的時(shí)間與該進(jìn)程總的運(yùn)行時(shí)間的比例。%MEM表示該進(jìn)程占用內(nèi)存和總內(nèi)存的比例。VSZ表示占用的虛擬內(nèi)存大小,以KB為單位。RSS為進(jìn)程占用的物理內(nèi)存值,以KB為單位。TTY表示該進(jìn)程建立時(shí)所對(duì)應(yīng)的終端,"?"表示該進(jìn)程不占用終端。STAT表示進(jìn)程的運(yùn)行狀態(tài),包括以下幾種代碼:D,不可中斷的睡眠;R,就緒(在可運(yùn)行隊(duì)列中);S,睡眠;T,被跟蹤或停止;Z,終止(僵死)的進(jìn)程,Z不存在,但暫時(shí)無(wú)法消除;W,沒(méi)有足夠的內(nèi)存分頁(yè)可分配;<高優(yōu)先序的進(jìn)程;N,低優(yōu)先序的進(jìn)程;L,有內(nèi)存分頁(yè)分配并鎖在內(nèi)存體內(nèi)(實(shí)時(shí)系統(tǒng)或I/O)。START為進(jìn)程開(kāi)始時(shí)間。TIME為執(zhí)行的時(shí)間。COMMAND是對(duì)應(yīng)的命令名。
應(yīng)用實(shí)例如下。
在進(jìn)行系統(tǒng)維護(hù)時(shí),如果CPU負(fù)載突然增加,而又不知道是哪一個(gè)進(jìn)程造成的情況。使用命令:
#ps aux | sort +3n
因?yàn)?CPU選項(xiàng)在第三列,所以sort選3作為參數(shù),+表示升序輸出結(jié)果 .
2.top命令
top命令用來(lái)顯示系統(tǒng)當(dāng)前的進(jìn)程狀況。
格式:top [選項(xiàng)]
主要選項(xiàng)如下。
d:指定更新的間隔,以秒計(jì)算。
q:沒(méi)有任何延遲的更新。如果使用者有超級(jí)用戶(hù),則top命令將會(huì)以最高的優(yōu)先序執(zhí)行。
c:顯示進(jìn)程完整的路徑與名稱(chēng)。
S:累積模式,會(huì)將已完成或消失的子進(jìn)程的CPU時(shí)間累積起來(lái)。
s:安全模式。
i:不顯示任何閑置(Idle)或無(wú)用(Zombie)的進(jìn)程。
n:顯示更新的次數(shù),完成后將會(huì)退出top。
說(shuō)明:top命令和ps命令的基本作用是相同的,都顯示系統(tǒng)當(dāng)前的進(jìn)程狀況。但是top是一個(gè)動(dòng)態(tài)顯示過(guò)程,即可以通過(guò)用戶(hù)按鍵來(lái)不斷刷新當(dāng)前狀態(tài)。這里結(jié)合圖來(lái)說(shuō)明它給出的信息。
top - 15:01:27 up 48 days, 20:31, 3 users, load average: 0.08, 0.12, 0.42
Tasks: 174 total, 1 running, 171 sleeping, 0 stopped, 2 zombie
Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.6%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2075312k total, 1996848k used, 78464k free, 179360k buffers
Swap: 4128760k total, 68k used, 4128692k free, 1298736k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9013 root 15 0 2328 1056 796 R 0.3 0.1 0:00.02 top
1 root 15 0 2064 624 536 S 0.0 0.0 0:03.80 init
2 root RT -5 0 0 0 S 0.0 0.0 0:03.88 migration/0
3 root 36 19 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:04.06 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.05 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root RT -5 0 0 0 S 0.0 0.0 0:05.96 migration/2
9 root 34 19 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/2
10 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/2
11 root RT -5 0 0 0 S 0.0 0.0 0:02.98 migration/3
12 root 34 19 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/3
在圖中,第一行表示的項(xiàng)目依次為當(dāng)前時(shí)間、系統(tǒng)啟動(dòng)時(shí)間、當(dāng)前系統(tǒng)登錄用戶(hù)數(shù)目、平均負(fù)載。第二行顯示的是所有啟動(dòng)的、目前運(yùn)行的、掛起(Sleeping)的和無(wú)用(Zombie)的進(jìn)程。第三行顯示的是目前CPU的使用情況,包括系統(tǒng)占用的比例、用戶(hù)使用比例、閑置(Idle)比例。第四行顯示物理內(nèi)存的使用情況,包括總的可以使用的內(nèi)存、已用內(nèi)存、空閑內(nèi)存、緩沖區(qū)占用的內(nèi)存。第五行顯示交換分區(qū)的使用情況,包括總的交換分區(qū)、使用的、空閑的和用于高速緩存的交換分區(qū)。第六行顯示的項(xiàng)目最多,下面列出了詳細(xì)解釋。
PID(Process ID):進(jìn)程標(biāo)志號(hào),是非零正整數(shù)。USER:進(jìn)程所有者的用戶(hù)名。PR:進(jìn)程的優(yōu)先級(jí)別。NI:進(jìn)程的優(yōu)先級(jí)別數(shù)值。VIRT:進(jìn)程占用的虛擬內(nèi)存值。RES:進(jìn)程占用的物理內(nèi)存值。SHR:進(jìn)程使用的共享內(nèi)存值。STAT:進(jìn)程的狀態(tài),其中S表示休眠,R表示正在運(yùn)行,Z表示僵死狀態(tài),N表示該進(jìn)程優(yōu)先值是負(fù)數(shù)。%CPU:該進(jìn)程占用的CPU使用率。%MEM:該進(jìn)程占用的物理內(nèi)存和總內(nèi)存的百分比。TIME:該進(jìn)程啟動(dòng)后占用的總的CPU時(shí)間。COMMAND:進(jìn)程啟動(dòng)的啟動(dòng)命令名稱(chēng),如果這一行顯示不下,進(jìn)程會(huì)有一個(gè)完整的命令行。top命令使用過(guò)程中,還可以使用一些交互的命令來(lái)完成其他參數(shù)的功能。這些命令是通過(guò)快捷鍵啟動(dòng)的。
<空格>:立刻刷新。
P:根據(jù)CPU使用大小進(jìn)行排序。
T:根據(jù)時(shí)間、累計(jì)時(shí)間排序。
q:退出top命令。
m:切換顯示內(nèi)存信息。
t:切換顯示進(jìn)程和CPU狀態(tài)信息。
c:切換顯示命令名稱(chēng)和完整命令行。
M:根據(jù)使用內(nèi)存大小進(jìn)行排序。
W:將當(dāng)前設(shè)置寫(xiě)入~/.toprc文件中。這是寫(xiě)top配置文件的推薦方法。
可以看到,top命令是一個(gè)功能十分強(qiáng)大的監(jiān)控系統(tǒng)的工具,對(duì)于系統(tǒng)管理員而言尤其重要。但是,它的缺點(diǎn)是會(huì)消耗很多系統(tǒng)資源。