有時候,CPU 佔用很高,而且是root的進程。比如
top
Tasks: 558 total, 1 running, 557 sleeping, 0 stopped, 0 zombie
%Cpu(s): 61.4 us, 0.0 sy, 0.0 ni, 38.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 13191446+total, 10841356+free, 3224532 used, 20276364 buff/cache
KiB Swap: 13409894+total, 13409894+free, 0 used. 12776337+avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3430 root 20 0 81488 75840 4 S 3588 0.1 406637:57 sd-pam
11707 user 20 0 40940 3980 3044 R 6.2 0.0 0:00.02 top
1 root 20 0 119924 6064 3968 S 0.0 0.0 0:11.58 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.10 kthreadd
這裏 root 進程 sd-pam 佔用了大量CPU資源。如何解決這個問題?
通過 pstree -p 3430
我們得到,該進程的完整的進程樹是 systemd—libserv—libserv 。
通過 ps -eo pid,comm,unit
我們 得到 security info :
3430 libserv cron.service
通過 pa -aux
我們得到 see every process on the system using BSD syntax:
root 1630 0.0 0.0 27728 2916 ? Ss Jun02 0:08 /usr/sbin/cron -f
我們找到,是cron
服務守護着 libserv 進程。這就是sd-pam 始終kill 不了的原因。
接下來的方法就比較簡單了。
sudo kill 1630
sudo kill 3430
相似的問題也發生在 sh
,就是 top
列出的 sh
命令佔用CPU很高,用上述方法可以解決。
參考:
a strange behavior of sd-pam #11753
Where is this cron job running from?
systemd System and Service Manager