在一次定位問題的過程中,發現機器上啟動了大量的進程,導致負載很高,於是就想統計一下各個進程的數量。
awk提取進程命令行
ps -ef >/tmp/a
cat /tmp/a | awk '{for(i=1;i<8;i++){$i=""};print $0}' >/tmp/b
核心在於第2行,ps命令的結果從第8行以后才是進程命令行,所以使用一個for循環,將第8列之前的內容都設置為空,然后再打印整行命令。
sort + uniq 統計進程數量
sort /tmp/b | uniq -c |sort -n
根據上面的結果檢查哪個進程數量最多即可。