ps命令
ps命令來自于英文詞組”process status“的縮寫,其功能是用于顯示當前系統的行程狀態,使用ps命令可以查看到行程的所有資訊,例如行程的號碼、發起者、系統資源使用占比(處理器與記憶體)、運行狀態等等,幫助我們及時的發現哪些行程出現”僵死“或”不可中斷“等例外情況,
經常會與kill命令搭配使用來中斷和洗掉不必要的服務行程,避免服務器的資源浪費,
| a | 顯示現行終端機下的所有程式,包括其他用戶的程式 |
|---|---|
| -A | 顯示所有程式 |
| c | 顯示每個程式真正的指令名稱,而不包含路徑 |
| -C <指令名稱> | 指定執行指令的名稱,并列出該指令的程式的狀況 |
| -d | 顯示所有程式,但不包括階段作業管理員的程式 |
| e | 列出程式時,顯示每個程式所使用的環境變數 |
| -f | 顯示UID,PPIP,C與STIME欄位 |
| f | 用ASCII字符顯示樹狀結構,表達程式間的相互關系 |
| g | 顯示現行終端機下的所有程式,包括所屬組的程式 |
| -G <群組識別碼> | 列出屬于該群組的程式的狀況 |
| h | 不顯示標題列 |
| -H | 顯示樹狀結構,表示程式間的相互關系 |
| -j | 采用作業控制的格式顯示程式狀況 |
| -l | 采用詳細的格式來顯示程式狀況 |
| L | 列出欄位的相關資訊 |
| -m | 顯示所有的執行緒 |
| n | 以數字來表示USER和WCHAN欄位 |
| -N | 顯示所有的程式,除了執行ps指令終端機下的程式之外 |
| -p <程式識別碼> | 指定程式識別碼,并列出該程式的狀況 |
| r | 只列出現行終端機正在執行中的程式 |
| -s <階段作業> | 列出隸屬該階段作業的程式的狀況 |
| s | 采用程式信號的格式顯示程式狀況 |
| S | 列出程式時,包括已中斷的子程式資料 |
| -t <終端機編號> | 列出屬于該終端機的程式的狀況 |
| -T | 顯示現行終端機下的所有程式 |
| u | 以用戶為主的格式來顯示程式狀況 |
| -U <用戶識別碼> | 列出屬于該用戶的程式的狀況 |
| U <用戶名稱> | 列出屬于該用戶的程式的狀況 |
| v | 采用虛擬記憶體的格式顯示程式狀況 |
| -V或V | 顯示版本資訊 |
| -w或w | 采用寬闊的格式來顯示程式狀況 |
| x | 顯示所有程式,不以終端機來區分 |
| X | 采用舊式的Linux i386登陸格式顯示程式狀況 |
| -y | 配合選項”-l”使用時,不顯示F(flag)欄位,并以RSS欄位取代ADDR欄位 |
| --cols <每列字符數> | 設定每列的最大字符數 |
| --headers | 重復顯示標題列 |
| --help | 在線幫助 |
| --info | 顯示排錯資訊 |
| --lines <顯示列數> | 設定顯示畫面的列數 |
使用實體
-
ps -l[root@localhost ~] ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 14351 14212 0 80 0 - 28912 do_wai pts/0 00:00:00 bash 0 R 0 14390 14351 0 80 0 - 38338 - pts/0 00:00:00 ps各個表頭的含義:
-
F:代表這個行程的flag,如果是4,則代表使用者為 super user
-
S:代表這個行程的狀態stat
行程狀態 引數含義 狀態碼 運行 正在運行或者運行佇列中等待 R 運行 running 中斷 休眠,受阻,在等待某個條件的形成后者接受信號 S 中斷 sleeping 不可中斷 收到信號不喚醒和不可運行,行程必須等待直到有中斷發生 D 不可中斷 僵死 行程已經終止,但行程描述符還在,直到父行程呼叫wait4()系統呼叫后釋放 Z 僵死 zombie 停止 行程收到SIGNSTOP,SIGSTP,SIGTIN,SIGTOU信號后停止運行 T 停止 traced -
UID:代表執行者的userId
-
PID:行程的id
-
PPID:父行程的id
-
C:占用CPU資源的百分比
-
PRI:指行程的執行優先級(Priority的簡寫),其值越小越早被執行
-
NI:代表行程的nice值,其表示行程可被執行的優先級的修正數值
-
ADDR:代表行程的地址,它指出該行程在記憶體的哪個部分,如果是個正在運行的程式,一般都是"-"
-
SZ:占用的記憶體大小
-
WCHAN:判斷當前行程是否正在運行,若為"-",則代表正在運行;若該行程處于休眠狀態,該值就是它在內核中的地址
-
TTY:該行程是在那個終端機上面運行,若與終端機無關,則顯示?,另外,tty1-tty6 是本機上面的登入者程式,若為 pts/0 等等的,則表示為由網路連接進主機的程式,
-
TIME:占用CPU的時間
-
CMD:所下達的指令名稱
-
-
顯示系統中全部的行程資訊,含詳細資訊:
ps aux-
a (show processes for all users) 顯示所有用戶的行程
-
u (display the process’s user/owner) 顯示用戶
-
x (also show processes not attached to a terminal)顯示無控制終端的行程
[root@localhost ~] ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 241688 14664 ? Ss May11 0:11 /usr/lib/systemd/systemd --system --deserialize 20 root 112709 0.0 0.0 152948 10348 ? Ss 09:14 0:00 sshd: root [priv] root 112713 0.0 0.0 152948 5544 ? S 09:14 0:00 sshd: root@pts/0 root 112714 0.3 0.0 28416 7072 pts/0 Ss 09:14 0:00 -bash root 112742 0.0 0.0 57512 3844 pts/0 R+ 09:15 0:00 ps aux -
-
結合輸出重定向,將當前行程資訊保留備份至指定檔案:
[root@linuxcool ~] ps aux > backup.txt -
結合管道運算子,將當前系統運行狀態中指定行程資訊過濾出來:
ps aux | grep[root@localhost ~]# ps aux | grep nginx root 112759 0.0 0.0 11776 1092 pts/0 S+ 09:20 0:00 grep --color=auto nginx [root@localhost ~]# ps aux | grep ssh root 1510 0.0 0.0 92968 7228 ? Ss May11 0:00 /usr/sbin/sshd -D root 112709 0.0 0.0 152948 10348 ? Ss 09:14 0:00 sshd: root [priv] root 112713 0.0 0.0 152948 5544 ? S 09:14 0:00 sshd: root@pts/0 root 112761 0.0 0.0 11776 968 pts/0 S+ 09:20 0:00 grep --color=auto ssh -
結合管道運算子,將當前系統運行狀態中指定用戶的行程資訊過濾出來:
ps -u root[root@localhost ~] ps -u root PID TTY TIME CMD 1 ? 00:00:11 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:00 rcu_gp 4 ? 00:00:00 rcu_par_gp -
結合管道運算子與sort命令,依據處理器使用量(第三列)情況降序排序:
ps aux | sort -rnk 3[root@localhost ~] ps aux | sort -rnk 3 root 75247 1.5 0.0 5778572 101496 ? Sl May11 143:56 /usr/bin/python3 /opt/ratel/src/ratel/api/manage.py runserver root 112775 0.0 0.0 34964 1848 pts/0 S+ 09:24 0:00 sort -rnk 3 root 112774 0.0 0.0 57512 3808 pts/0 R+ 09:24 0:00 ps aux root 112766 0.0 0.0 0 0 ? I 09:21 0:00 [kworker/14:2-xfs-cil/dm-0] root 112745 0.0 0.0 0 0 ? I 09:15 0:00 [kworker/14:0-kdmflush]
ps 命令會顯示你系統當前的行程狀態,但是這個結果是靜態的,如果我們想要使用ps命令來實時查看行程狀態,并且通過CPU和記憶體用量來對結果進行排序,并且希望結果能夠每秒重繪1次,我們可以把ps命令和watch命令結合起來使用,watch -n 1 'ps -aux --sort -pcpu,+pmem | head -6'
-
[root@localhost ~]# watch -n 1 'ps -aux --sort -pcpu,+pmem | head -6' Every 1.0s: ps -aux --sort -pcpu,+pmem | head -6 localhost.localdomain: Wed May 18 09:26:50 2022 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 75247 1.5 0.0 5778572 101496 ? Sl May11 143:58 /usr/bin/python3 /opt/ratel/src/ratel/api/manage.py runserver root 2 0.0 0.0 0 0 ? S May11 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< May11 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< May11 0:00 [rcu_par_gp] root 6 0.0 0.0 0 0 ? I< May11 0:00 [kworker/0:0H-kblockd] -
ps -ef是以System V方式顯示,該種方式比BSD方式顯示的多-
e (all processes)顯示所有用戶的行程此引數的效果和指定"a"引數相同
-
f (ASCII art forest)用ASCII字符顯示樹狀結構,表達程式間的相互關系
[root@localhost ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 May11 ? 00:00:11 /usr/lib/systemd/systemd --system --deserialize 20 root 2 0 0 May11 ? 00:00:00 [kthreadd] root 3 2 0 May11 ? 00:00:00 [rcu_gp] root 112781 112714 0 09:26 pts/0 00:00:00 watch -n 1 ps -aux --sort -pcpu,+pmem | head -6 root 112870 2 0 09:27 ? 00:00:00 [kworker/14:1-xfs-sync/dm-0] -
本文來自博客園,作者:ivanlee717,轉載請注明原文鏈接:https://www.cnblogs.com/ivanlee717/p/16283488.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/476921.html
標籤:Linux
下一篇:Centos 安裝 docker
