我有一些进程显示为<defunct>
(top
和ps
)。我已经从真实的脚本和程序中总结了一些东西。
在我的crontab
:
* * * * * /tmp/launcher.sh /tmp/tester.sh
的内容launcher.sh
(当然标记为可执行):
#!/bin/bash
# the real script does a little argument processing here
"$@"
的内容tester.sh
(当然标记为可执行):
#!/bin/bash
sleep 27 & # the real script launches a compiled C program in the background
ps
显示以下内容:
user 24257 24256 0 18:32 ? 00:00:00 [launcher.sh] <defunct>
user 24259 1 0 18:32 ? 00:00:00 sleep 27
请注意,tester.sh
不会出现 - 它在启动后台作业后已退出。
为什么launcher.sh
坚持,标记<defunct>
?它似乎只在由 --cron
而不是我自己运行它时启动。
附加说明:launcher.sh
是本系统运行的常用脚本,不易修改。其他的东西(crontab
, tester.sh
,甚至是我运行的程序而不是sleep
)可以更容易地修改。