各個 process 資源 (CPU, Memory) 使用排序



資源與指令

主要針對以下資源做 process 排序:

  • cpu
  • memory

Memory

1
$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | head

sample output:

隨便抓一台測試機,指令結果如下:

1
2
3
4
5
6
7
8
9
PID  USER     %MEM COMMAND
1145 root      2.3 /usr/share/auditbeat/bin/auditbeat --environment ....
1149 root      0.4 /usr/share/filebeat/bin/filebeat --environment systemd -c /etc/filebeat/filebeat.yml --path.home /usr/share/filebeat --path.config ....
1595 root      0.4 /opt/Elastic/Agent/data/elastic-agent-fd322d/install/metricbeat-7.15.2-linux-x86_64/metricbeat ....
614 root      0.3 /usr/lib/systemd/systemd-journald
1494 root      0.3 /opt/Elastic/Agent/data/elastic-agent-fd322d/install/filebeat-7.15.2-linux-x86_64/filebeat ....
796 root      0.2 /opt/Elastic/Agent/elastic-agent
1148 root      0.1 /usr/sbin/rsyslogd -n
832 root      0.1 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

CPU

同理,只要把 %mem 改成 %cpu 即可:

1
$ ps -o pid,user,%cpu,command ax | sort -b -k3 -r | head

sample output

1
2
3
4
5
6
7
8
PID USER     %CPU COMMAND
1145 root      7.8 /usr/share/auditbeat/bin/auditbeat ....
1135 nodeusr   0.9 /usr/local/bin/node_exporter
796 root      0.2 /opt/Elastic/Agent/elastic-agent
1595 root      0.1 /opt/Elastic/Agent/data/elastic-agent-....
754 root      0.0 [xfs-reclaim/sda]
768 root      0.0 [xfs-reclaim/dm-]
527 root      0.0 [xfs-reclaim/dm-]



指令說明

ps (Process Status)

  • -o : 指定要列出的欄位
  • ax : 印出除了自己 own 之外的 process。

Note

  • 前綴 a 的用法,可以參考 man page
1
2
3
4
5
6
    a             Lift the BSD-style "only yourself" restriction, 
    
                  ...
    
                  to list all processes when used together with 
                  the x option.
  • ps 僅顯示 active processes 的相關資訊。
  • CPU 一欄顯示的是「此 Process 執行的時間佔存活時間的比例」、加總不會是 100%
  • 若要看「即時 CPU 使用狀況」要使用 top 指令。

sort

  • -b : 忽略前綴的空白 (spaces)
  • -k : 用哪一欄排序,這邊選 3 是因為第三欄就是 memory / cpu 的值
  • -r : 反向排序,數值高的先列出來



注意事項

used RAM 與 shared Memory

  • 到底怎樣算記憶體「使用」(used) 量?
  • ps 指令中列出來的,是「該 process 『自己』總共使用的記憶體」;但是作業系統中時常有共用記憶體 (shared memory),這種情況在 ps 的結果中會被算到兩次以上。
  • 所以通常 ps 的加總跟 free 指令顯示的會有出入。



REF {#ref}:


主題 StackJimmy 設計