我有时会在夜间运行长时间的xargs作业,早上发现xargs在中途死掉真的很烦人,比如因为一个特殊情况下的分段错误,就像今晚发生的那样。
即使只有一个xargs子进程被杀死,它也不会再处理任何输入:
控制台1:
控制台2:
即使只有一个xargs子进程被杀死,它也不会再处理任何输入:
控制台1:
[09:35:48] % seq 40 | xargs -i --max-procs=4 bash -c 'sleep 10; date +"%H:%M:%S {}";'
xargs: bash: terminated by signal 15
09:35:58 3
09:35:58 4
09:35:58 2
<Exit with code 125>
控制台2:
[09:35:54] kill 5601
我能以某种方式防止xargs
在子进程死亡后停止处理任何更多的输入,而是继续处理吗?
debian wheezy
中使用的是xargs
版本4.4.2,看起来即使我杀掉一个特定的sleep
进程,一切似乎都运行正常。你使用的是哪个版本的xargs
?也许他们已经在最新版本中修复了这个问题。 - Kannan Mohanxargs ... bash -c '...;exit 0'
或者甚至xargs ... bash -c '... || echo erk'
? - Samveenparallel -j 1
是一种可能的黑客解决方案。 - user2267