bash - 如何找出Linux中长期占用资源的僵尸进程
PHP中文网
PHP中文网 2017-04-17 11:08:50
[Linux讨论组]

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(4)
大家讲道理

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

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

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

黄舟

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

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

PHP中文网

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

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

问题根本不成立。

大家讲道理

好高级。。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号