|
|
1
11
因为他们不是
因为将来有人可能会等待这些进程,所以内核无法完全摆脱它们,或者它将无法执行
当您从shell启动一个时,shell会捕获sigchld并无论如何执行各种等待操作,因此没有什么东西会长期失效。 但是克罗恩并没有处于等待状态,他正在睡觉,所以这个死去的孩子可能会在一旁呆一段时间,直到克罗恩醒来。 更新: 正在答复评论… 嗯,我确实设法复制了这个问题:
所以,我想发生的是:
|
|
|
2
4
我怀疑cron正在等待会话中的所有子进程终止。关于负PID参数,请参见等待(2)。您可以通过以下方式看到SESS:
以下是我看到的(编辑的):
请注意,sh和sleep在同一个sess中。 使用命令setsid(1)。这是tester.sh:
注意你不需要
|
|
|
3
4
在我看来,这是由于进程crond(由crond为每个任务生成)等待stdin上的输入导致的,stdin通过管道连接到crontab中命令的stdout/stderr。这是因为cron能够通过邮件将结果输出发送给用户。 所以crond正在等待eof,直到用户命令和它生成的所有子进程关闭管道。如果这样做了,crond将继续使用wait语句,然后失效的用户命令将消失。 因此,我认为您必须从管道中显式地断开脚本中生成的每个子进程(例如,通过将其重定向到一个文件或/dev/null)。 所以下面的行应该在crontab中工作:
|
|
|
4
3
i_d建议您通过不使用两个单独的过程来解决问题:have
这将消除多余的过程。 |
|
5
1
我在寻找类似问题的解决方案时发现了这个问题。不幸的是,这个问题的答案没有解决我的问题。 杀死失效的进程不是一个选项,因为您需要找到并杀死它的父进程。我以以下方式结束了这些已失效的进程:
在“grep”中,您可以将搜索范围缩小到您所追求的特定失效流程。 |
|
|
6
-2
我对同一个问题做了很多次测试。 最后我找到了解决办法。 只需在bash脚本之前指定“/bin/bash”,如下所示。 * * * * * /bin/bash /tmp/launcher.sh /tmp/tester.sh |
|
|
Nora PÄ« · 统一问题在2d精灵后面排序立方体 3 年前 |
|
|
Codename K · VB6-如何使窗体排在第二位? 8 年前 |
|
|
uzi_no_uzi · 如何修复背景位置的错误? 8 年前 |
|
|
EagerToLearn · .Net控制台应用程序在后台运行 8 年前 |
|
|
Eric Chong · Swift中所有视图控制器的背景图像相同 8 年前 |
|
Zhihar · css:带背景的选项卡样式边框 8 年前 |
|
|
Lukasz · WORDPRESS-不需要的HTML按钮背景色 8 年前 |
|
|
Jorge · div上的方形图案作为背景(使用纯CSS) 8 年前 |