首页 > 如何找出Linux中长期占用资源的僵尸进程

如何找出Linux中长期占用资源的僵尸进程

服务器上不定期的会出现僵尸进程,占用资源很麻烦啊。
然后得杀掉僵尸啊,但是进程列表里又有很多,我该怎么快速筛选呢?
比如找出那些运行超过1个小时的进程之类的


1. 应该先检查下程序, 是不是 没有对 子进程 调用 wait或者waitpid函数回收进程资源, 或者把子进程挂在init进程下面, 由系统回收资源。 没有回收 进程资源的进程 就是会zombie状态。

2. 作为一个应急的处理办法, 把状态是Zombie的进程筛选出来, 然后杀了也可以。
kill -9 $( ps aux | awk '{ if( $8 == "Z" ) { print $2 ; } }' )


好高级。。


僵尸进程一般指的是top输出中状态列(S)为Z(zombie)的进程。

运行时间长于1小时的不叫僵尸进程。

问题根本不成立。


首先,僵尸进程不占用内存和CPU,只占用一个PID和对应的进程结构存储空间。

其次,出现僵尸进程,通常是server程序没写好,建议首先考虑修复这个问题

最后,用ps aux可以看出一个进程是否是僵尸进程(STAT=Z)、它的启动时间(START TIME,或者执行stat /proc/PID获取创建时间)。有了这些数据,你可以很容易地写个简单脚本来滤出那些进程。

【热门文章】
【热门文章】