crontab 创建大量进程如何一次删除

2015-10-08 14:10:07 +08:00
 fxxkgw

Linux 下 crontab 创建了大量进程 把磁盘 io 卡死了,导致任务越积越多,现在有数千个
大体机构就是一个 crond fork 出大量 CROND fork 出更多进程。
大部分处于 S D 状态
top | head -2 如下:

top - 14:09:39 up 502 days, 22:41, 2 users, load average: 1521.80, 1521.94, 1521.90
Tasks: 6886 total, 1 running, 6885 sleeping, 0 stopped, 0 zombie

如何一次性杀掉所有的 crontab 进程呢,因为很多处于 D 的状态 kill -9 无效果

2824 次点击
所在节点    Linux
13 条回复
dreamtrail
2015-10-08 15:27:26 +08:00
killall 不就行了?
likuku
2015-10-08 15:31:03 +08:00
「 kill -9 」都无效... 难办
hei1000
2015-10-08 15:52:18 +08:00
sudo kill -9 ...
chzyer
2015-10-08 16:38:23 +08:00
sudo reboot
lonelinsky
2015-10-08 16:49:41 +08:00
D 状态基本只能直接重启了 祝好运(看 uptime 和 load 也是满醉的

另外 D 状态是在等 IO,所以应该是 IO 有问题才导致的 D 状态进程变多,而不是 D 状态的进程导致出现磁盘 IO 问题
lonelinsky
2015-10-08 16:54:27 +08:00
另外, 题注可以用 sysrq 抓一个调度 /进程情况,看看目前都是卡在什么地方了...
clino
2015-10-08 16:57:37 +08:00
如果用 ci 类型的软件,应该能把子进程全部 kill 掉吧
不过你这个连 kill -9 都不行的就不知道怎么处理了
fxxkgw
2015-10-08 17:15:58 +08:00
@lonelinsky
感谢 确实是 io 问题 发现分布式文件系统挂了 重新整理了下 然后用 ps + awk + kill -18 kill -9 搞定了 避免了重启
lonelinsky
2015-10-08 18:26:11 +08:00
@fxxkgw

赞, 所以是先解决了分布式文件系统的问题,然后用 18 和 9 的信号量让这边的应用进程恢复正常的?
crabRunning
2015-10-08 18:54:24 +08:00
AWK
fxxkgw
2015-10-08 19:24:01 +08:00
@lonelinsky 是的 在没解决文件系统时 杀 也可以杀死 不过特别慢 简单说就是用完杀命令行 几个小时才消失不到 50 个僵尸进程 切不确定到底是 kill -18 生效的还是系统自身回收机制
lonelinsky
2015-10-08 19:43:12 +08:00
@fxxkgw 应该是自回收的, D 状态进程不会接受任何信号量,我刚以为你的 kill -18 是在文件系统修复之后输入的...
yuchting
2015-10-09 11:07:11 +08:00
逛了几天 V2EX ,看了标题,心想终于让我逮到一个可以用专业知识回答的帖子了, pkill crond 来搞定,后来点进来一看,好吧, linux 小白果然是小白,不懂,抛砖

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/226307

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX