2008年10月30日 星期四

ps 指令的範例蒐集

行程 (process) 的意義 ,已談過何謂行程並簡介 ps 這個指令。
現在我想要做的不是深入探討 ps 指令的意義,而是蒐集常用 ps 指令串,列出提及的旗標,
這將方便我快速查詢目前的行程狀態。

一般旗標:
-A:顯示所有程序
-e:顯示所有程序
T: 顯示現行終端本身的所有程序
a: 顯示現行終端本身的所有程序,包括其他使用者
x: 顯示所有程序,不以終端來區分。
輸出格式規劃:
-f:全格式的顯示。
-l:較長、較詳細的將該 PID 的的資訊列出。
j:工作的格式 (jobs format)。
u:以使用者導向顯示。
f:以 ASCII 字符顯示程序的樹狀結構,以表示程序間的關係

注意:
ps 指令支援多種作樣系統,故旗標相當多元,有沒有 - 號,代表意義完全不同
,部分作業系統可相容兩種顯示,但一般學習 ps 指令還是得分辨有沒有 - 的差異。

範例一:最常用顯示詳細行程狀態

bang@linuxdiary:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1692 552 ? S Sep30 0:01 init [5]
root 2 0.0 0.0 0 0 ? S Sep30 0:00 [migration/0]
範例二:次常用顯示所有行程狀態
bang@linuxdiary:~$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Sep30 ? 00:00:01 init [5]
root 2 1 0 Sep30 ? 00:00:00 [migration/0]
範例三:顯示某個指令行程狀態
bang@linuxdiary:~$ ps -fC httpd
UID PID PPID C STIME TTY TIME CMD
root 26990 1 0 Oct25 ? 00:00:00 /usr/sbin/httpd
範例四:找出某兩個服務有關行程
bang@linuxdiary:~$ ps aux | egrep 'cron|syslog'
root 3270 0.0 0.0 1604 608 ? Ss Sep30 1:51 syslogd -m 0
root 3761 0.0 0.0 4624 1044 ? Ss Sep30 0:07 crond
root 14312 0.0 0.0 5216 1344 ? S 04:00 0:00 crond
root 20013 0.0 0.0 3732 716 pts/1 S+ 12:07 0:00 egrep cron|syslog
範例五:列出 CPU 使用率最高的 10 行程
bang@linuxdiary:~$ ps aux | head -1 ; ps aux | sort -k3rn | head -10
範例六:列出記憶體使用率最高的 10 行程
bang@linuxdiary:~$ ps aux | head -1 ; ps aux | sort -k4rn | head -10
範例七:另一種列出記憶體使用率最高的 10 行程,他是利用排列 SZ (記憶體使用量)
bang@linuxdiary:~$ ps -elf | head -1 ; ps -elf | sort -k10rn | head -10
範例八:列出行程樹
bang@linuxdiary:~$ ps auxf

沒有留言: