top和atop就不用介绍了,下面主要介绍的是ps命令的作用。
按照CPU排序
# ps aux --sort=pcpu |head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 51632 3408 ? Ss 2019 17:26 /usr/lib/systemd/systemd --system --deserialize 20
root 2 0.0 0.0 0 0 ? S 2019 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 2019 0:06 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 2019 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 2019 0:15 [migration/0]
root 8 0.0 0.0 0 0 ? S 2019 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 2019 16:07 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 2019 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 2019 0:17 [watchdog/0]
按照内存排序
# ps aux --sort=pmem |head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 2019 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 2019 0:06 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 2019 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 2019 0:15 [migration/0]
root 8 0.0 0.0 0 0 ? S 2019 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 2019 16:07 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 2019 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 2019 0:17 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 2019 0:12 [watchdog/1]
但是,有的时候,会有脚本自己调用自己疯狂占用进程的情况,导致内存跑满。比如,一个叫test.sh,进程数量达到1w+,这时候,需要将所有的进程杀死。
处理方法:
# ps aux |grep test.sh |grep -v grep |awk '{print $2}' |xargs -i kill {}
这样,将所有的test.sh的进程全部杀死。
但是,有的时候,因为进程杀死过程可能很长,在杀进程的时候可能会生成新的进程,这时候就需要重复执行几次,直到没有再出现调用的进程。
转载请注明:liutianfeng.com » Linux机器内存、CPU占用很高,快速定位的方法:ps,top,atop