linux ps 命令查看進程狀態

顯示其餘用戶啓動的進程(a)
查看系統中屬於本身的進程(x)
啓動這個進程的用戶和它啓動的時間(u)

使用「date -s」命令來修改系統時間
好比將系統時間設定成1996年6月10日的命令以下。
#date -s 06/10/96
將系統時間設定成下午1點12分0秒的命令以下。
#date -s 13:12:00

------------------------------------------------------
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1340 440 ? S Nov05 0:04 init
root 2 0.0 0.0 0 0 ? SW Nov05 0:00 [keventd]
root 3 0.0 0.0 0 0 ? SW Nov05 0:00 [keventd]
...
------------------------------------------------------

USER域指明瞭是哪一個用戶啓動了這個命令;
用戶能夠查看某個進程佔用了多少CPU;
內存使用及其VSZ(虛擬內存大小)和RSS(常駐集大小):
VSZ表示若是一個程序徹底駐留在內存的話須要佔用多少內存空間;
RSS指明瞭當前實際佔用了多少內存;
STAT顯示了進程當前的狀態:
"S":進程處在睡眠狀態,代表這些進程在等待某些事件發生--多是用戶輸入或者系統資源的可用性;

last命令能夠有效的查看系統登陸事件

在一個進程調用了exit以後,該進程並不是立刻就消失掉,而是留下一個稱爲殭屍進程(Zombie)的數據結構。在Linux進程的5種狀態中,殭屍進程是很是特殊的一種,它已經放棄了幾乎全部內存空間,沒有任何可執行代碼,也不能被調度,僅僅在進程列表中保留一個位置,記載該進程的退出狀態等信息供其餘進程收集,除此以外,殭屍進程再也不佔有任何內存空間。

系統調用exit的做用是使進程退出,但也僅僅限於將一個正常的進程變成一個殭屍進程,並不能將其徹底銷燬。
進程一旦調用了wait,就當即阻塞本身,由wait自動分析是否當前進程的某個子進程已經退出,若是讓它找到了這樣一個已經變成殭屍的子進程,wait 就會收集這個子進程的信息,並把它完全銷燬後返回;若是沒有找到這樣一個子進程,wait就會一直阻塞在這裏,直到有一個出現爲止。

轉載  ps aux 中STAT 解釋 收藏

運行 ps aux 的到以下信息:
   ps aux
USER    PID   %CPU %MEM VSZ   RSS TTY    STAT   START TIME COMMAND
smmsp 3521   0.0    0.7     6556 1616     ?        Ss      20:40 0:00 sendmail: Queue runner@01:00:00 f
root    3532    0.0       0.2     2428    452     ?        Ss      20:40 0:00 gpm -m /dev/input/mice -t imps2
htt        3563    0.0       0.0    2956    196     ?        Ss       20:41 0:00 /usr/sbin/htt -retryonerror 0
htt        3564    0.0       1.7   29460 3704     ?        Sl        20:41 0:00 htt_server -nodaemon
root      3574    0.0       0.4     5236 992     ?        Ss       20:41 0:00 crond
xfs        3617    0.0       1.3   13572 2804     ?        Ss       20:41 0:00 xfs -droppriv -daemon
root       3627   0.0       0.2     3448    552     ?        SNs     20:41 0:00 anacron -s
root      3636    0.0       0.1     2304    420     ?        Ss       20:41 0:00 /usr/sbin/atd
dbus    3655    0.0       0.5   13840 1084     ?        Ssl       20:41 0:00 dbus-daemon-1 --system
....................................
stat 中的參數意義以下:
   D 不可中斷 Uninterruptible(usually IO)
   R 正在運行,或在隊列中的進程
   S 處於休眠狀態
   T 中止或被追蹤
   Z 殭屍進程
   W 進入內存交換(從內核2.6開始無效)
   X   死掉的進程

    < 高優先級
    n   低優先級
    s   包含子進程
    +   位於後臺的進程組

======================================

ps命令
要對進程進行監測和控制,首先必需要了解當前進程的狀況,也就是須要查看當前進程,而ps命令就是最基本同時也是很是強大的進程查看命令.使用該命令能夠肯定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有殭屍、哪些進程佔用了過多的資源等等.總之大部分信息都是能夠經過執行該命令獲得的.
ps命令最經常使用的仍是用於監控後臺進程的工做狀況,由於後臺進程是不和屏幕鍵盤這些標準輸入/輸出設備進行通訊的,因此若是須要檢測其狀況,即可以使用ps命令了.
         1)ps a 顯示現行終端機下的全部程序,包括其餘用戶的程序。
2)ps -A 顯示全部程序。
3)ps c 列出程序時,顯示每一個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
4)ps -e 此參數的效果和指定"A"參數相同。
5)ps e 列出程序時,顯示每一個程序所使用的環境變量。
6)ps f 用ASCII字符顯示樹狀結構,表達程序間的相互關係。
7)ps -H 顯示樹狀結構,表示程序間的相互關係。
8)ps -N 顯示全部的程序,除了執行ps指令終端機下的程序以外。
9)ps s 採用程序信號的格式顯示程序情況。
10)ps S 列出程序時,包括已中斷的子程序資料。
11)ps -t<終端機編號>  指定終端機編號,並列出屬於該終端機的程序的情況。
12)ps u  以用戶爲主的格式來顯示程序情況。
13)ps x  顯示全部程序,不以終端機來區分。
最經常使用的方法是ps -aux,而後再利用一個管道符號導向到grep去查找特定的進程,而後再對特定的進程進行操做。



linux上進程有5種狀態:
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的造成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生)
4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)
5. 中止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後中止運行運行)

ps工具標識進程的5種狀態碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 運行 runnable (on run queue)
S 中斷 sleeping
T 中止 traced or stopped
Z 僵死 a defunct (」zombie」) process

注: 其它狀態還包括W(無駐留頁), <(高優先級進程), N(低優先級進程), L(內存鎖頁).

使用ps格式輸出來查看進程狀態:
ps -eo user,stat..,cmd

user 用戶名
uid 用戶號
pid 進程號
ppid 父進程號
size 內存大小, Kbytes字節.
vsize 總虛擬內存大小, bytes字節(包含code+data+stack)
share 總共享頁數
nice 進程優先級(缺省爲0, 最大爲-20)
priority(pri) 內核調度優先級
pmem 進程分享的物理內存數的百分比
trs 程序執行代碼駐留大小
rss 進程使用的總物理內存數, Kbytes字節
time 進程執行起到如今總的CPU暫用時間
stat 進程狀態
cmd(args) 執行命令的簡單格式

例子:
查看當前系統進程的uid,pid,stat,pri, 以uid號排序.
ps -eo pid,stat,pri,uid –sort uid

查看當前系統進程的user,pid,stat,rss,args, 以rss排序.
ps -eo user,pid,stat,rss,args –sort rss



名稱:ps
使用權限:全部使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動態
參數:
ps 的參數很是多, 在此僅列出幾個經常使用的參數並大略介紹含義
-A 列出全部的行程
-w 顯示加寬能夠顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示全部包含其餘使用者的行程

au(x) 輸出格式 :

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程擁有者
PID: pid
%CPU: 佔用的 CPU 使用率
%MEM: 佔用的記憶體使用率
VSZ: 佔用的虛擬記憶體大小
RSS: 佔用的記憶體大小
TTY: 終端的次要裝置號碼 (minor device number of tty)
STAT: 該行程的狀態:
D: 不可中斷的靜止
R: 正在執行中
S: 靜止狀態
T: 暫停執行
Z: 不存在但暫時沒法消除
W: 沒有足夠的記憶體分頁可分配
<: 高優先序的行程
N: 低優先序的行程
L: 有記憶體分頁分配並鎖在記憶體內
START: 行程開始時間
TIME: 執行的時間
COMMAND:所執行的指令

範例:

ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
........


要對進程進行監測和控制,首先必需要了解當前進程的狀況,也就是須要查看當前進程,而 ps 命令就是最基本同時也是很是強大的進程查看命令。使用該命令能夠肯定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等等。總之大部分信息都是能夠經過執行該命令獲得的。

ps 爲咱們提供了進程的一次性的查看,它所提供的查看結果並不動態連續的;若是想對進程時間監控,應該用 top 工具。

kill 用於殺死進程。

一、ps 的參數說明
ps 提供了不少的選項參數,經常使用的有如下幾個:

l 長格式輸出;
u 按用戶名和啓動時間的順序來顯示進程;
j 用任務格式來顯示進程;
f 用樹形格式來顯示進程;

a 顯示全部用戶的全部進程(包括其它用戶);
x 顯示無控制終端的進程;
r 顯示運行中的進程;
ww 避免詳細參數被截斷;

咱們經常使用的選項是組合是 aux 或 lax,還有參數 f 的應用。

二、ps aux 或 lax 輸出的解釋
USER 進程的屬主;
PID 進程的ID;
PPID 父進程;
%CPU 進程佔用的CPU百分比;
%MEM 佔用內存的百分比;
NI 進程的NICE值,數值大,表示較少佔用CPU時間;
VSZ 進程虛擬大小;
RSS 駐留中頁的數量;
TTY 終端ID
STAT 進程狀態(有如下幾種)

D 沒法中斷的休眠狀態(一般 IO 的進程);
R 正在運行可中在隊列中可過行的;
S 處於休眠狀態;
T 中止或被追蹤;
W 進入內存交換(從內核2.6開始無效);
X 死掉的進程(歷來沒見過);
Z 殭屍進程;

< 優先級高的進程
N 優先級較低的進程
L 有些頁被鎖進內存;
s 進程的領導者(在它之下有子進程);
l 多進程的(使用 CLONE_THREAD, 相似 NPTL pthreads);
+ 位於後臺的進程組;
WCHAN 正在等待的進程資源;
START 啓動進程的時間;
TIME 進程消耗CPU的時間;
COMMAND 命令的名稱和參數;

三、應用舉例
[root@localhost ~]# ps -aux |more
能夠用 | 管道和 more 鏈接起來分頁查看。
[root@localhost ~]# ps -aux > ps001.txt
[root@localhost ~]# more ps001.txt
這裏是把全部進程顯示出來,並輸出到ps001.txt文件,而後再經過more 來分頁查看。

四、kill 終止進程
有十幾種控制進程的方法,下面是一些經常使用的方法:
kill -STOP [pid]
發送SIGSTOP (17,19,23)中止一個進程,而並不消滅這個進程。
kill -CONT [pid]
發送SIGCONT (19,18,25)從新開始一箇中止的進程。
kill -KILL [pid]
發送SIGKILL (9)強迫進程當即中止,而且不實施清理操做。
kill -9 -1
終止你擁有的所有進程。
SIGKILL 和 SIGSTOP 信號不能被捕捉、封鎖或者忽略,可是,其它的信號能夠。因此這是你的終極武器。
相關文章
相關標籤/搜索