Linux常見命令ps的運用

ps(Process Status)命令是linux中最常見的命令之一,它用來列出當前系統運行中的進程的狀態信息。當然了,它只顯示命令執行時的進程狀態,如果想要動態列出狀態信息,可以選擇使用top命令。那麼通過ps命令我們能夠知道進程的哪些信息呢?下面進行介紹。
命令基本介紹
命令格式

ps命令基本格式爲:
ps [options]
常用參數

-A 顯示所有進程(同-e)
-a 顯示當前終端的所有進程
-u 顯示進程的用戶信息
-o 以用戶自定義形式顯示進程信息
-f 顯示程序間的關係
對於更多參數的介紹,可使用命令man ps查看,這裏不再贅述。

字段含義
在介紹實例之前,需要先了解一下ps命令輸出各字段的含義,這樣我們才能更好地理解所展示的信息。常見字段的基本含義如下:

USER 進程所有者的用戶名
PID 進程號
START 進程激活時間
%CPU 進程自最近一次刷新以來所佔用的CPU時間和總時間的百分比
%MEM 進程使用內存的百分比
VSZ 進程使用的虛擬內存大小,以K爲單位
RSS 駐留空間的大小。顯示當前常駐內存的程序的K字節數。
TTY 進程相關的終端
STAT 進程狀態,包括下面的狀態:
D 不可中斷 Uninterruptible sleep (usually IO)
R 正在運行,或在隊列中的進程
S 處於休眠狀態
T 停止或被追蹤
Z 殭屍進程
W 進入內存交換(從內核2.6開始無效)
X 死掉的進程
< 高優先級
N 低優先級
L 有些頁被鎖進內存
s 包含子進程
+ 位於後臺的進程組;
l 多線程,克隆線程
TIME 進程使用的總CPU時間
COMMAND 被執行的命令行
NI 進程的優先級值,較小的數字意味着佔用較少的CPU時間
PRI 進程優先級。
PPID 父進程ID
WCHAN 進程等待的內核事件名
常見用法
下面來看看一些常見用法。

顯示所有進程信息

ps -A
PID TTY TIME CMD
1 ? 00:00:03 systemd
2 ? 00:00:00 kthreadd
4 ? 00:00:00 kworker/0:0H
6 ? 00:00:00 mm_percpu_wq
7 ? 00:00:00 ksoftirqd/0
8 ? 00:00:02 rcu_sched
9 ? 00:00:00 rcu_bh
10 ? 00:00:00 migration/0
11 ? 00:00:00 watchdog/0
(內容較多,其他部分略過。)
雖然能顯示所有進程,但是顯示的信息卻不多,基本只顯示了進程id和進程名,有時候並不實用。

顯示所有進程基本信息
相關參數 -e

ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:52 ? 00:00:03 /sbin/init splash
root 2 0 0 10:52 ? 00:00:00 [kthreadd]
root 4 2 0 10:52 ? 00:00:00 [kworker/0:0H]
root 6 2 0 10:52 ? 00:00:00 [mm_percpu_wq]
root 7 2 0 10:52 ? 00:00:00 [ksoftirqd/0]
root 8 2 0 10:52 ? 00:00:02 [rcu_sched]
root 9 2 0 10:52 ? 00:00:00 [rcu_bh]
root 10 2 0 10:52 ? 00:00:00 [migration/0]
(內容較多,其他部分略過。)
這個時候已經顯示較多信息了。

顯示指定用戶的進程
相關參數-u

ps -u root
PID TTY TIME CMD
1 ? 00:00:03 systemd
2 ? 00:00:00 kthreadd
4 ? 00:00:00 kworker/0:0H
6 ? 00:00:00 mm_percpu_wq
7 ? 00:00:00 ksoftirqd/0
8 ? 00:00:03 rcu_sched
9 ? 00:00:00 rcu_bh
查看指定進程名相關信息
這個時候就需要配合grep使用了。
例如,查看”java“相關進程:

ps -ef|grep java
root 2685 2684 2 10:55 pts/0 00:01:19 java -jar ./software/finalspeed/finalspeed_client.jar
root 5423 4487 0 11:55 pts/20 00:00:00 grep --color=auto java
查看進程佔用內存,cpu利用率等信息
ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 185488 6188 ? Ss 10:52 0:03 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 10:52 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 10:52 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S< 10:52 0:00 [mm_percpu_wq]
從上面的信息,可以看到進程的所有者、cpu佔用率、內存佔用率等較爲詳細的信息。

顯示線程相關信息
相關參數-l

ps -elf
查看進程間的關係
相關參數-H,進程間關係以樹形圖的方式展示:

ps -ejH
查看進程的指定字段信息
有時候可能比較關注某些進程信息,ps -o可以指定要顯示的列
例如:

ps -eo %cpu,%mem,vsz,rsz,start,stat,pid,sid,ni,uid,user,rss,time,command
.0 0.0 0 0 10:52:51 S 365 0 - 0 root 0 00:00:00 [irq/47-mei_me]
0.0 0.0 0 0 10:52:51 S< 373 0 -20 0 root 0 00:00:00 [cfg80211]
0.0 0.0 0 0 10:52:52 S< 402 0 -20 0 root 0 00:00:00 [ktpacpid]
0.0 0.0 0 0 10:52:56 S 669 0 0 0 root 0 00:00:00 [jbd2/sda15-8]
0.0 0.0 0 0 10:52:56 S< 670 0 -20 0 root 0 00:00:00 [ext4-rsv-conver]
0.0 0.0 0 0 10:52:57 S 676 0 0 0 root 0 00:00:00 [jbd2/sda11-8]
0.0 0.0 0 0 10:52:57 S< 677 0 -20 0 root 0 00:00:00 [ext4-rsv-conver]
0.0 0.0 0 0 10:52:58 S 683 0 0 0 root 0 00:00:00 [jbd2/sda14-8]
0.0 0.0 0 0 10:52:58 S< 684 0 -20 0 root 0 00:00:00 [ext4-rsv-conver]
查看指定進程指定信息
只需要在最後指定–pid參數即可。
例如:

ps -o %cpu,%mem,vsz,rsz,start,stat,pid,sid,ni,uid,user,rss,time,command --pid 2685
%CPU %MEM VSZ RSZ STARTED STAT PID SID NI UID USER RSS TIME COMMAND
2.0 1.9 5740448 159796 10:55:24 Sl+ 2685 2583 0 1000 hyb 159796 00:01:46 java -jar ./software/finalspeed/finalspeed_client.jar
進程太多時分頁顯示
如果進程信息較多,可能一頁無法完成顯示,這時可以配合使用more命令
例如:

ps -aux|more
總結
ps命令也是在linux下常用命令之一,通過它我們可以瞭解更多進程的相關信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章