[b] Linux中的ps命令是Process Status的縮寫。[/b][b] ps命令用於報告當前系統的進程狀態。可以搭配kill指令隨時中斷、刪除不必要的程序。[/b]
[b] (1)用法:[/b][b] 用法: ps [選項參數] [用戶名](可選)[/b]
[b] (2)功能:[/b][b] 功能: 用來顯示當前進程的狀態。[/b]
ps命令可以搭配kill指令隨時中斷、刪除不必要的程序。ps命令是最基本同時也是非常強大的進程查看命令,使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等等,總之大部分信息都是可以通過執行該命令得到的。
[b] (3)選項參數:[/b] 1) -A 顯示所有的進程
2) -e 顯示所有的進程,與-A參數一樣
3) -u 顯示指定用戶的信息 4) -a 顯示所有終端機下執行的進程,除了階段作業領導者之外。
5) a 顯示現行終端機下的所有進程,包括其他用戶的進程。 6) -H 顯示樹狀結構,表示程序間的相互關系。 -j或j:采用工作控制的格式顯示程序狀況。
[b] (4)實例:[/b] 1)[root@localhost sunjimeng]# ps -e|more -20 顯示所有的進程
[root@localhost sunjimeng]# ps -e|more -20 PID TTY TIME CMD 1 ? 00:00:05 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:05 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H 7 ? 00:00:00 migration/0 8 ? 00:00:00 rcu_bh 9 ? 00:00:00 rcuob/0 10 ? 00:00:00 rcuob/1 11 ? 00:00:00 rcuob/2 12 ? 00:00:00 rcuob/3 13 ? 00:00:00 rcuob/4 14 ? 00:00:00 rcuob/5 15 ? 00:00:00 rcuob/6 16 ? 00:00:00 rcuob/7 17 ? 00:00:00 rcuob/8 18 ? 00:00:00 rcuob/9 19 ? 00:00:00 rcuob/10 20 ? 00:00:00 rcuob/11 21 ? 00:00:00 rcuob/12-A命令與-e命令相同,都可以顯示所有進程
[root@localhost sunjimeng]# ps -A|more -10 PID TTY TIME CMD 1 ? 00:00:06 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:05 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H 7 ? 00:00:00 migration/0 8 ? 00:00:00 rcu_bh 9 ? 00:00:00 rcuob/0 10 ? 00:00:00 rcuob/1 11 ? 00:00:00 rcuob/2 --More--2)[root@localhost sunjimeng]# ps -u root|more -10 顯示指定用戶的進程信息
[root@localhost sunjimeng]# ps -u root|more -10 PID TTY TIME CMD 1 ? 00:00:06 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:05 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H 7 ? 00:00:00 migration/0 8 ? 00:00:00 rcu_bh 9 ? 00:00:00 rcuob/0 10 ? 00:00:00 rcuob/1 11 ? 00:00:00 rcuob/23)[root@localhost sunjimeng]# ps a ps a命令與ps -a命令
[root@localhost sunjimeng]# ps a PID TTY STAT TIME COMMAND 2004 tty1 Ssl+ 5:13 /usr/bin/Xorg :0 -background none -verbose -auth /run/gdm/auth-for-gdm-8E54kT/database -seat seat0 -nolisten tcp 11465 pts/0 Ss 0:00 bash 11498 pts/0 S 0:00 su root 11504 pts/0 S 0:00 bash 11757 pts/0 R+ 0:00 ps a [root@localhost sunjimeng]# ps -a PID TTY TIME CMD 11498 pts/0 00:00:00 su 11504 pts/0 00:00:00 bash 11761 pts/0 00:00:00 ps4)[root@localhost sunjimeng]# ps -ef|more -10 顯示所有進程信息,連同命令行
[root@localhost sunjimeng]# ps -ef|more -10 UID PID PPID C STIME TTY TIME CMD root 1 0 0 12:15 ? 00:00:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 24 root 2 0 0 12:15 ? 00:00:00 [kthreadd] root 3 2 0 12:15 ? 00:00:05 [ksoftirqd/0] root 5 2 0 12:15 ? 00:00:00 [kworker/0:0H] root 7 2 0 12:15 ? 00:00:00 [migration/0] root 8 2 0 12:15 ? 00:00:00 [rcu_bh] root 9 2 0 12:15 ? 00:00:00 [rcuob/0] root 10 2 0 12:15 ? 00:00:00 [rcuob/1] root 11 2 0 12:15 ? 00:00:00 [rcuob/2] --More--5)[root@localhost sunjimeng]# ps -ef|more -5 ps命令與grep命令結合起來查找指定的進程
[root@localhost sunjimeng]# ps -ef|more -5 UID PID PPID C STIME TTY TIME CMD root 1 0 0 12:15 ? 00:00:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 24 root 2 0 0 12:15 ? 00:00:00 [kthreadd] root 3 2 0 12:15 ? 00:00:05 [ksoftirqd/0] root 5 2 0 12:15 ? 00:00:00 [kworker/0:0H] [root@localhost sunjimeng]# ps -ef|grep kworker/0:0H root 5 2 0 12:15 ? 00:00:00 [kworker/0:0H] root 11981 11504 0 17:33 pts/0 00:00:00 grep --color=auto kworker/0:0H6)[root@localhost sunjimeng]# ps -l 將目前屬於您自己這次登入的 PID 與相關信息列示出來
[root@localhost sunjimeng]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 11498 11465 0 80 0 - 45979 wait pts/0 00:00:00 su 4 S 0 11504 11498 0 80 0 - 29064 wait pts/0 00:00:00 bash 0 R 0 11993 11504 0 80 0 - 30319 - pts/0 00:00:00 ps說明:
各相關信息的意義: F 代表這個程序的旗標 (flag), 4 代表使用者為 super user
S 代表這個程序的狀態 (STAT),關於各 STAT 的意義將在內文介紹 UID 程序被該 UID 所擁有
PID 就是這個程序的 ID ! PPID 則是其上級父程序的ID
C CPU 使用的資源百分比 PRI 這個是 Priority (優先執行序) 的縮寫
NI 這個是 Nice 值 ADDR 這個是 kernel function,指出該程序在內存的那個部分。如果是個 running的程序,一般就是 "-"
SZ 使用掉的內存大小 WCHAN 目前這個程序是否正在運作當中,若為 - 表示正在運作
TTY 登入者的終端機位置 TIME 使用掉的 CPU 時間。
CMD 所下達的指令為何 在預設的情況下, ps 僅會列出與目前所在的 bash shell 有關的 PID 而已,所以, 當我使用 ps -l 的時候,只有三個 PID。
7)[root@localhost sunjimeng]# ps f 顯示進程間的關系
UID PID PPID C STIME TTY TIME CMD root 11498 11465 0 17:17 pts/0 00:00:00 su root root 11504 11498 0 17:17 pts/0 00:00:00 bash root 12311 11504 0 17:52 pts/0 00:00:00 ps -f [root@localhost sunjimeng]# ps f PID TTY STAT TIME COMMAND 11498 pts/0 S 0:00 su root 11504 pts/0 S 0:00 \_ bash 12315 pts/0 R+ 0:00 \_ ps f 2004 tty1 Ssl+ 5:25 /usr/bin/Xorg :0 -background none -verbose -auth /run/gdm/auth-for-gdm-8E54kT/database -seat seat0 -nolisten tcp [root@localhost sunjimeng]#
8)root@localhost sunjimeng]# ps aux |more -10 列出目前所有的正在內存當中的程序
root@localhost sunjimeng]# ps aux |more -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 60052 7796 ? Ss 12:15 0:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 24 root 2 0.0 0.0 0 0 ? S 12:15 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 12:15 0:05 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 12:15 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S 12:15 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 12:15 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 12:15 0:00 [rcuob/0] root 10 0.0 0.0 0 0 ? S 12:15 0:00 [rcuob/1] root 11 0.0 0.0 0 0 ? S 12:15 0:00 [rcuob/2]
說明: USER:該 process 屬於哪一個個使用者賬號的
PID :該 process 的號碼 %CPU:該 process 使用掉的 CPU 資源百分比
%MEM:該 process 所占用的物理內存百分比 VSZ :該 process 使用掉的虛擬內存量 (Kbytes)
RSS :該 process 占用的固定的內存量 (Kbytes) TTY :該 process 是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程序,若為 pts/0 等等的,則表示為由網絡連接進主機的程序。
STAT:該程序目前的狀態,主要的狀態有 R :該程序目前正在運作,或者是可被運作
S :該程序目前正在睡眠當中 (可說是 idle 狀態),但可被某些訊號 (signal) 喚醒。 T :該程序目前正在偵測或者是停止了
Z :該程序應該已經終止,但是其父程序卻無法正常的終止他,造成 zombie (疆屍) 程序的狀態 START:該 process 被觸發啟動的時間
TIME :該 process 實際使用 CPU 運作的時間 COMMAND:該程序的實際指令
9)[root@localhost sunjimeng]# ps -axjf|more -10 列出類似程序樹的程序顯示
[root@localhost sunjimeng]# ps -axjf|more -10 PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 0 2 0 0 ? -1 S 0 0:00 [kthreadd] 2 3 0 0 ? -1 S 0 0:05 \_ [ksoftirqd/0] 2 5 0 0 ? -1 S< 0 0:00 \_ [kworker/0:0H] 2 7 0 0 ? -1 S 0 0:00 \_ [migration/0] 2 8 0 0 ? -1 S 0 0:00 \_ [rcu_bh] 2 9 0 0 ? -1 S 0 0:00 \_ [rcuob/0] 2 10 0 0 ? -1 S 0 0:00 \_ [rcuob/1] 2 11 0 0 ? -1 S 0 0:00 \_ [rcuob/2] 2 12 0 0 ? -1 S 0 0:00 \_ [rcuob/3]