我在top
(和ps
)上看到一些进程显示为<defunct>
。我已经从真实的脚本和程序中将问题简化了。
在我的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
)可以更容易地进行修改。