Linux中的ps命令是Process Status的縮寫。ps命令用來列出系統中當前運行的那些進程。
ps
命令列出的是當前進程的快照,即當前的進程情況。若需要動態顯示進程信息,則可使用top
命令
Linux進程狀態
在Linux系統上,進程有5種狀態:
- 運行(正在運行或在運行隊列中等待)
- 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
- 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生)
- 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)
- 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行)
ps命令參數
詳細命令參數見
ps --help a
-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: 不可中斷的靜止 (通常爲
I/O
動作) - R: 正在執行中
- S: 靜止狀態
- T: 暫停執行
- Z: 不存在但暫時無法消除
- w: 沒有足夠的內存分頁可分配
- <: 高優先序的行程
- N: 低優先序的行程
- L: 有內存分頁分配並鎖在內存內 (實時系統或
I/O
)
- D: 不可中斷的靜止 (通常爲
- START: 行程開始時間
- TIME: 執行的時間
- COMMAND: 所執行的指令
ps使用實例
aux
ps aux
,顯示當前所有進程
[root@vultr ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 43408 3028 ? Ss Feb12 0:54 /usr/lib/systemd/systemd --system --deserialize 17
root 2 0.0 0.0 0 0 ? S Feb12 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Feb12 0:34 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Feb12 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S Feb12 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S Feb12 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R Feb12 1:09 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< Feb12 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S Feb12 0:24 [watchdog/0]
root 13 0.0 0.0 0 0 ? S Feb12 0:00 [kdevtmpfs]
root 14 0.0 0.0 0 0 ? S< Feb12 0:00 [netns]
root 15 0.0 0.0 0 0 ? S Feb12 0:01 [khungtaskd]
root 16 0.0 0.0 0 0 ? S< Feb12 0:00 [writeback]
root 17 0.0 0.0 0 0 ? S< Feb12 0:00 [kintegrityd]
root 18 0.0 0.0 0 0 ? S< Feb12 0:00 [bioset]
root 19 0.0 0.0 0 0 ? S< Feb12 0:00 [bioset]
root 20 0.0 0.0 0 0 ? S< Feb12 0:00 [bioset]
root 21 0.0 0.0 0 0 ? S< Feb12 0:00 [kblockd]
axjf
ps -axjf
,以進程樹的方式顯示當前所有進程
[root@vultr ~]# ps -axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
2 13018 0 0 ? -1 S 0 0:00 \_ [kworker/0:0]
2 13065 0 0 ? -1 S 0 0:00 \_ [kworker/0:1]
0 1 1 1 ? -1 Ss 0 0:54 /usr/lib/systemd/systemd --system --deserialize 17
1 1260 1260 1260 ? -1 Ss 0 14:08 /usr/lib/systemd/systemd-journald
1 1281 1281 1281 ? -1 Ss 0 0:00 /usr/lib/systemd/systemd-udevd
1 1486 1486 1486 ? -1 Ssl 999 0:01 /usr/lib/polkit-1/polkitd --no-debug
1 1489 1489 1489 ? -1 Ss 0 0:06 /usr/lib/systemd/systemd-logind
1 1505 1505 1505 ? -1 Ss 81 0:04 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-acti
1 1543 1535 1535 ? -1 S 998 0:07 /usr/sbin/chronyd
1 1630 1630 1630 tty1 1630 Ss+ 0 0:00 /sbin/agetty --noclear tty1 linux
1 1655 1655 1655 ? -1 Ssl 0 0:03 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
1 2731 2731 2731 ? -1 Ssl 0 9:28 /usr/sbin/rsyslogd -n
1 2732 2732 2732 ? -1 Ss 0 2:37 /usr/sbin/sshd -D
2732 13041 13041 13041 ? -1 Ss 0 0:00 \_ sshd: root@pts/1
13041 13043 13043 13043 pts/1 13068 Ss 0 0:00 \_ -bash
13043 13068 13068 13043 pts/1 13068 R+ 0 0:00 \_ ps -axjf
參考資料: