一覽Linux進(jìn)程下篇
四、ps命令
1. ps簡(jiǎn)介
前面介紹的兩個(gè)命令都是用于查看當(dāng)前系統(tǒng)用戶(hù)的情況,下面就來(lái)看看進(jìn)程的情況,這也是本章的主題。要對(duì)進(jìn)程進(jìn)行監(jiān)測(cè)和控制,首先必須要了解當(dāng)前進(jìn)程的情況,也就是需要查看當(dāng)前進(jìn)程,而ps命令就是最基本同時(shí)也是非常強(qiáng)大的進(jìn)程查看命令。使用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒(méi)有僵死、哪些進(jìn)程占用了過(guò)多的資源等等??傊蟛糠中畔⒍际强梢酝ㄟ^(guò)執(zhí)行該命令得到的。
2. ps命令及其參數(shù)
ps命令最常用的還是用于監(jiān)控后臺(tái)進(jìn)程的工作情況,因?yàn)楹笈_(tái)進(jìn)程是不和屏幕鍵盤(pán)這些標(biāo)準(zhǔn)輸入/輸出設(shè)備進(jìn)行通信的,所以如果需要檢測(cè)其情況,便可以使用ps命令了。
該命令語(yǔ)法格式如下:
ps [選項(xiàng)]
下面對(duì)命令選項(xiàng)進(jìn)行說(shuō)明:
-e 顯示所有進(jìn)程。
-f 全格式。
-h 不顯示標(biāo)題。
-l 長(zhǎng)格式。
-w 寬輸出。
a 顯示終端上的所有進(jìn)程,包括其他用戶(hù)的進(jìn)程。
r 只顯示正在運(yùn)行的進(jìn)程。
x 顯示沒(méi)有控制終端的進(jìn)程。
O[+|-] k1 [,[+|-] k2 [,…]] 根據(jù)SHORT KEYS、k1、k2中快捷鍵指定的多級(jí)排序順序顯示進(jìn)程列表。對(duì)于ps的不同格式都存在著默認(rèn)的順序指定。這些默認(rèn)順序可以被用戶(hù)的指定所覆蓋。其中 “+”字符是可選的,“-”字符是倒轉(zhuǎn)指定鍵的方向。
pids 只列出指定進(jìn)程的情況。各進(jìn)程ID之間使用逗號(hào)分隔。該進(jìn)程列表必須在命令行參數(shù)的最后一個(gè)選項(xiàng)后面緊接著給出,中間不能插入空格。比如:ps -f1,4,5。
以下介紹長(zhǎng)命令行選項(xiàng),這些選項(xiàng)都使用“--”開(kāi)頭:
--sort X[+|-] key [,[+|-] key [,…]] 從SORT KEYS段中選一個(gè)多字母鍵?!?”字符是可選的,因?yàn)槟J(rèn)的方向就是按數(shù)字升序或者詞典淥承頡1熱紓?ps -jax -sort=uid,-ppid,+pid。
--help 顯示幫助信息。
--version 顯示該命令的版本信息。
在前面的選項(xiàng)說(shuō)明中提到了排序鍵,接下來(lái)對(duì)排序鍵作進(jìn)一步說(shuō)明。需要注意的是排序中使用的值是ps使用的內(nèi)部值,并非僅用于某些輸出格式的偽值。排序鍵列表見(jiàn)表4-3。
表4-3 排序鍵列表
短格式
長(zhǎng)格式
說(shuō) 明
c
cmd
可執(zhí)行的簡(jiǎn)單名稱(chēng)
C
cmdline
完整命令行
f
flags
長(zhǎng)模式標(biāo)志
g
pgrp
進(jìn)程的組ID
G
tpgid
控制tty進(jìn)程組ID
j
cutime
累計(jì)用戶(hù)時(shí)間
J
cstime
累計(jì)系統(tǒng)時(shí)間
k
utime
用戶(hù)時(shí)間
K
stime
系統(tǒng)時(shí)間
m
min_flt
次要頁(yè)錯(cuò)誤的數(shù)量
M
maj_flt
主要頁(yè)錯(cuò)誤的數(shù)量
n
cmin_flt
累計(jì)次要頁(yè)錯(cuò)誤
N
cmaj_flt
累計(jì)主要頁(yè)錯(cuò)誤
o
session
對(duì)話ID
p
pid
進(jìn)程ID
P
ppid
父進(jìn)程ID
r
rss
駐留大小
R
resident
駐留頁(yè)
s
size
內(nèi)存大小(千字節(jié))
S
share
共享頁(yè)的數(shù)量
#p#
t
tty
tty次要設(shè)備號(hào)
T
start_time
進(jìn)程啟動(dòng)的時(shí)間
U
uid
UID
u
user
用戶(hù)名
v
vsize
總的虛擬內(nèi)存數(shù)量(字節(jié))
y
priority
內(nèi)核調(diào)度優(yōu)先級(jí)
3. 常用ps命令參數(shù)
前面兩節(jié)介紹的參數(shù)可能讓讀者覺(jué)得有些可怕,實(shí)際上這是一個(gè)非常容易使用的命令,一般的用戶(hù)只需掌握一些最常用的命令參數(shù)就可以了。 最常用的三個(gè)參數(shù)是u、a、x,下面將通過(guò)例子來(lái)說(shuō)明其具體用法。
[例20] 以root身份登錄系統(tǒng),查看當(dāng)前進(jìn)程狀況
$ ps
PID TTY TIME COMMAND
5800 ttyp0 00:00:00 bash
5835 ttyp0 00:00:00 ps
可以看到,顯示的項(xiàng)目共分為四項(xiàng),依次為PID(進(jìn)程ID)、TTY(終端名稱(chēng))、TIME(進(jìn)程執(zhí)行時(shí)間)、COMMAND(該進(jìn)程的命令行輸入)。
可以使用u選項(xiàng)來(lái)查看進(jìn)程所有者及其他一些詳細(xì)信息,如下所示:
$ ps u
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u
在bash進(jìn)程前面有條橫線,意味著該進(jìn)程便是用戶(hù)的登錄shell,所以對(duì)于一個(gè)登錄用戶(hù)來(lái)說(shuō)帶短橫線的進(jìn)程只有一個(gè)。還可以看到%CPU、%MEM兩個(gè)選項(xiàng),前者指該進(jìn)程占用的CPU時(shí)間和總時(shí)間的百分比;后者指該進(jìn)程占用的內(nèi)存和總內(nèi)存的百分比。
在這種情況下看到了所有控制終端的進(jìn)程;但是對(duì)于其他那些沒(méi)有控制終端的進(jìn)程還是沒(méi)有觀察到,所以這時(shí)就需要使用x選項(xiàng)。使用x選項(xiàng)可以觀察到所有的進(jìn)程情況。
[例21] 下面是使用x選項(xiàng)的例子:
$ ps x
PID TTY STAT TIME COMMAND
5800 ttyp0 S 0:00 -bash
5813 ttyp1 S 0:00 -bash
5921 ttyp0 S 0:00 man ps
5922 ttyp0 S 0:00 sh -c /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz | /
5923 ttyp0 S 0:00 /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz
5924 ttyp0 S 0:00 /usr/bin/less -is
5941 ttyp1 R 0:00 ps x
可以發(fā)現(xiàn)突然一下子就多出了那么多的進(jìn)程。這些多出來(lái)的進(jìn)程就是沒(méi)有控制終端的進(jìn)程。前面看到的所有進(jìn)程都是test用戶(hù)自己的。其實(shí)還有許多其他用戶(hù)在使用著系統(tǒng),自然也就對(duì)應(yīng)著其他的很多進(jìn)程。如果想對(duì)這些進(jìn)程有所了解,可以使用a選項(xiàng)來(lái)查看當(dāng)前系統(tǒng)所有用戶(hù)的所有進(jìn)程。經(jīng)常使用的是aux組合選項(xiàng),這可以顯示最詳細(xì)的進(jìn)程情況。
[例22]
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1136 64 ? S Nov25 0:02 init [3]
root 2 0.0 0.0 0 0 ? SW Nov25 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Nov25 0:03 [kupdate]
root 4 0.0 0.0 0 0 ? SW Nov25 0:00 [kpiod]
root 5 0.0 0.0 0 0 ? SW Nov25 0:00 [kswapd]
root 163 0.0 0.1 1628 332 ? S Nov25 0:02 sshd
root 173 0.0 0.0 1324 200 ? S Nov25 0:00 syslogd
root 181 0.0 0.0 1420 0 ? SW Nov25 0:00 [klogd]
daemon 191 0.0 0.1 1160 312 ? S Nov25 0:00 /usr/sbin/atd
root 201 0.0 0.1 1348 492 ? S Nov25 0:00 crond
root 212 0.0 0.0 1292 68 ? S Nov25 0:00 inetd
……
在顯示的最前面是其他用戶(hù)的進(jìn)程情況,可以看到有root、daemon等用戶(hù)以及他們所啟動(dòng)的進(jìn)程。 在上面的例子中,介紹了ps命令最常見(jiàn)的一些選項(xiàng)和選項(xiàng)組合,用戶(hù)可以根據(jù)自己的需要選用。http://blog.csdn.net/ak47mig/archive/2007/03/02/1519670.aspx
【編輯推薦】