Zombie 就是已經呈現 殭屍狀態(Z) 的 Process, 平常的系統裡面不應該看到這種狀態才對.
註: 我的 Desktop 似乎蠻常看到. XD
使用 top 查看程式資源統計資訊
由 top 可以知道目前系統有多少個 zombie 程式 的 統計資訊.
- /usr/bin/top -b -i -n 1 # 由下述可見有 1個zombie (殭屍)
top - 22:42:44 up 1:37, 4 users, load average: 0.57, 0.61, 0.93
Tasks: 157 total, 1 running, 155 sleeping, 0 stopped, 1 zombie
Cpu(s): 49.5%us, 4.3%sy, 1.6%ni, 42.0%id, 2.5%wa, 0.1%hi, 0.1%si, 0.0%st
Mem: 1026116k total, 927496k used, 98620k free, 81600k buffers
Swap: 1012084k total, 16456k used, 995628k free, 343236k cachedPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6869 user 20 0 2464 1060 776 R 0.0 0.1 0:00.00 top - TOP 參數說明
- -b - Batch mode
- -n - how many itterations (-n number)
- -i : Idle Processes toggle
使用 ps 取得 程式狀態 與 PID
- ps aux | grep -w Z # 列出整個 pid 的 process 資訊
user 2192 0.0 0.0 0 0 ? Z 21:05 0:00 [scim] <defunct>
- ps aux | awk '{print $8 " " $2}' | grep -w Z # 列出 Z + pid
Z 2192
- ps aux | awk '$8=="Z" {print $2}' # 只抓出 pid
2192
- 抓到此 PID, 再看情況要不要 kill 掉囉~
計算某程式吃的總 CPU 資源
下述為計算 Apache 全部使用掉多少 CPU 資源加總.
使用 TOP 計算
- $ /usr/bin/top -d 2 -n 1 | awk '/apache/{count += $9;}; END {print count};' # 可以知道 CPU 總使用量
45%
使用 ps aux 計算
- $ ps aux | awk '/apache/{count += $3;}; END {print count};' # 這個會比較準.
45.6%