![如何防止 cron 执行的脚本导致进程卡住](https://linux22.com/image/12311/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%20cron%20%E6%89%A7%E8%A1%8C%E7%9A%84%E8%84%9A%E6%9C%AC%E5%AF%BC%E8%87%B4%E8%BF%9B%E7%A8%8B%E5%8D%A1%E4%BD%8F.png)
我有一些在 crontab 中运行的脚本,我认为这些脚本被“卡住”并且永远不会正确退出该进程。
我发现在 crontab 中拥有这些脚本的用户在“ps -aux”输出中有 4096 个进程,其中大多数都是旧的(几天或更长时间)并且可能被卡住,因为它们不应该像这样保持打开状态。因此,我在 cron 日志中收到“资源暂时不可用”错误。
我不明白的是为什么这些会陷入这样的困境。
这是我认为被卡住的一个例子
apache 6487 0.0 0.0 113176 1224 ? Ss Dec18 0:00 /bin/sh -c /app/www/scripts/migrate_enhanced.pl > /dev/null 2>&1
# pstree -pl 6487
sh(6487)---migrate_enhance(6489)---redshacl(6529)---ping(6530)
# cat /proc/6530/stack
[<ffffffff82c2b100>] __skb_wait_for_more_packets+0x120/0x180
[<ffffffff82c2b4cf>] __skb_recv_datagram+0x6f/0xd0
[<ffffffff82c2b573>] skb_recv_datagram+0x43/0x60
[<ffffffff82cb0999>] raw_recvmsg+0xa9/0x200
[<ffffffff82cc1220>] inet_recvmsg+0x80/0xb0
[<ffffffff82c1a4f5>] sock_recvmsg+0xc5/0x100
[<ffffffff82c1b673>] ___sys_recvmsg+0x133/0x2d0
[<ffffffff82c1cb91>] __sys_recvmsg+0x51/0x90
[<ffffffff82c1cbe2>] SyS_recvmsg+0x12/0x20
[<ffffffff82d75d9b>] system_call_fastpath+0x22/0x27
[<ffffffffffffffff>] 0xffffffffffffffff
#