在linux系統中,查看進程信息最常用的方法是使用ps命令。1. 默認執行 ps 顯示當前終端運行的進程,如 pid、tty、time 和 cmd 等信息;2. 使用 ps -ef 查看所有進程并顯示進程結構,而 ps aux 更側重資源占用情況,包括 %cpu、%mem、vsz 和 rss;3. 結合 grep 過濾特定進程,如 ps aux | grep nginx,并可通過 [n]ginx 排除 grep 自身進程;4. 使用 ps -ejh 可顯示進程樹結構,清晰展示父子關系。這些常用組合基本滿足日常進程監控和問題排查需求。
在linux系統中,查看進程信息最常用的方法之一就是使用 ps 命令。它能幫助我們快速了解當前運行的進程狀態、資源占用情況等,是日常排查問題和系統監控的重要工具。
1. ps 命令的基本用法
默認情況下,不帶參數執行 ps 命令只會顯示當前終端中運行的進程,通常是用戶啟動的一些前臺任務。例如:
ps
輸出可能如下:
PID TTY TIME CMD 1234 pts/0 00:00:00 bash 5678 pts/0 00:00:00 ps
其中:
- PID 是進程ID。
- TTY 表示終端設備。
- TIME 是該進程使用的CPU時間。
- CMD 是啟動該進程的命令。
如果你只是想看看自己當前終端里跑著什么,這樣就足夠了。
2. 查看所有進程:ps -ef 和 ps aux
要查看系統中所有的進程,通常會用兩個經典組合:
ps -ef
這個命令列出所有正在運行的進程,格式清晰,適合查找進程的父子關系(PPID)或具體命令行參數:
ps -ef
輸出示例:
UID PID PPID C STIME TTY TIME CMD root 1 0 0 09:00 ? 00:00:01 /sbin/init user1 1234 1233 0 09:10 pts/0 00:00:00 /bin/bash
- UID:啟動進程的用戶。
- PPID:父進程ID。
- STIME:進程啟動時間。
- CMD:完整的命令行。
ps aux
這個命令同樣顯示所有進程,但更側重于資源使用情況:
ps aux
輸出示例:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 12345 6789 ? Ss 09:00 0:01 /sbin/init user1 1234 0.0 0.2 23456 12345 pts/0 Ss 09:10 0:00 /bin/bash
- %CPU:當前進程占用CPU百分比。
- %MEM:內存使用百分比。
- VSZ:虛擬內存使用量(KB)。
- RSS:物理內存使用量(KB)。
- STAT:進程狀態(如S表示睡眠,R表示運行)。
這兩個命令可以根據需要選擇,-ef 更適合查進程結構,aux 更適合看資源占用。
3. 過濾特定進程:結合 grep 使用
當我們只想查看某個特定程序的進程時,可以將 ps 和 grep 結合使用。比如查找所有與 nginx 相關的進程:
ps aux | grep nginx
或者:
ps -ef | grep nginx
注意點:
-
有時候 grep 自己也會出現在結果中,可以通過加 [n]ginx 的方式排除:
ps aux | grep [n]ginx
這種方式常用于腳本中判斷某個服務是否在運行。
4. 顯示進程樹結構:ps -ejH
如果你想看到進程之間的父子關系,可以用 -ejH 參數來顯示樹狀結構:
ps -ejH
輸出示例:
PID PGID SID TTY TIME CMD 1 1 1 ? 00:00:01 /sbin/init 42 1 1 ? 00:00:00 _ systemd-journald
這樣就能清楚地看出哪些進程是由哪個父進程創建的。
基本上就這些。ps 雖然是個老命令,但功能非常強大,只要記住幾個常用組合,就能滿足大部分日常需求。