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 无效果
1
dreamtrail 2015-10-08 15:27:26 +08:00
killall 不就行了?
|
2
likuku 2015-10-08 15:31:03 +08:00
「 kill -9 」都无效... 难办
|
3
hei1000 2015-10-08 15:52:18 +08:00
sudo kill -9 ...
|
4
chzyer 2015-10-08 16:38:23 +08:00
sudo reboot
|
5
lonelinsky 2015-10-08 16:49:41 +08:00
D 状态基本只能直接重启了 祝好运(看 uptime 和 load 也是满醉的
另外 D 状态是在等 IO,所以应该是 IO 有问题才导致的 D 状态进程变多,而不是 D 状态的进程导致出现磁盘 IO 问题 |
6
lonelinsky 2015-10-08 16:54:27 +08:00
另外, 题注可以用 sysrq 抓一个调度 /进程情况,看看目前都是卡在什么地方了...
|
7
clino 2015-10-08 16:57:37 +08:00
如果用 ci 类型的软件,应该能把子进程全部 kill 掉吧
不过你这个连 kill -9 都不行的就不知道怎么处理了 |
8
fxxkgw OP @lonelinsky
感谢 确实是 io 问题 发现分布式文件系统挂了 重新整理了下 然后用 ps + awk + kill -18 kill -9 搞定了 避免了重启 |
9
lonelinsky 2015-10-08 18:26:11 +08:00
|
10
crabRunning 2015-10-08 18:54:24 +08:00 via Android
AWK
|
11
fxxkgw OP @lonelinsky 是的 在没解决文件系统时 杀 也可以杀死 不过特别慢 简单说就是用完杀命令行 几个小时才消失不到 50 个僵尸进程 切不确定到底是 kill -18 生效的还是系统自身回收机制
|
12
lonelinsky 2015-10-08 19:43:12 +08:00
@fxxkgw 应该是自回收的, D 状态进程不会接受任何信号量,我刚以为你的 kill -18 是在文件系统修复之后输入的...
|
13
yuchting 2015-10-09 11:07:11 +08:00
逛了几天 V2EX ,看了标题,心想终于让我逮到一个可以用专业知识回答的帖子了, pkill crond 来搞定,后来点进来一看,好吧, linux 小白果然是小白,不懂,抛砖
|