如何使`xargs`忽略孩子的出口并继续进行进一步处理

克里斯多夫·乌尔姆

我有时xargs整夜都从事长时间的工作,而早上发现xargs死在中间某个地方真的很烦,例如,由于一个特殊情况下的分割错误,就像今天晚上发生的那样。

如果甚至有一个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子进程死后停止处理更多的输入,而是继续处理吗?

han

不,你不能。xargssavannah.gnu.org资源中

if (WEXITSTATUS (status) == CHILD_EXIT_PLEASE_STOP_IMMEDIATELY)
  error (XARGS_EXIT_CLIENT_EXIT_255, 0,
         _("%s: exited with status 255; aborting"), bc_state.cmd_argv[0]);
if (WIFSTOPPED (status))
  error (XARGS_EXIT_CLIENT_FATAL_SIG, 0,
         _("%s: stopped by signal %d"), bc_state.cmd_argv[0], WSTOPSIG (status));
if (WIFSIGNALED (status))
  error (XARGS_EXIT_CLIENT_FATAL_SIG, 0,
         _("%s: terminated by signal %d"), bc_state.cmd_argv[0], WTERMSIG (status));
if (WEXITSTATUS (status) != 0)
  child_error = XARGS_EXIT_CLIENT_EXIT_NONZERO;

在该检查或调用它的函数周围没有标志。它似乎与最大进程有关,我想这是有道理的:如果将最大进程设置得足够高,它将不会打扰检查,直到达到极限为止,您可能永远不会这样做。

对于您尝试做的更好的解决方案可能是使用GNU Make

TARGETS=$(patsubst %,target-%,$(shell seq 1 40))

all: $(TARGETS)

target-%:
    sleep 10; date +"%H:%M:%S $*"

然后:

$ make -k -j4 

将具有相同的效果,并为您提供更好的控制。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Webapi2-在一项任务完成后从控制器操作返回,但继续进行进一步的异步处理

Gremlin:如果是,则检查顶点是否存在,然后继续进行进一步的旅行

如何查找* .css文件进行进一步处理,但忽略所有* .min.css文件?

如何匹配字符串并进行进一步处理?

如何删除与熊猫合并的Excel单元格以进行进一步处理?

如何存储MySQLi bind_result值以进行进一步处理?

如何获得符号表达式的值以进行进一步处理

如何在pyspark中按列对数据帧进行分区以进行进一步处理?

检索列表中的最后一个节点以进行进一步处理

如何捕获文件头,然后对原始文件进行进一步的文本处理?

如何将字符串转换为int []并检索数组以进行进一步处理

如何将关联数组从 PHP 传递到 HTML 以进行进一步处理

如何在循环中反复调用R并检索结果以在SAS中进行进一步处理

如何从Matlab的回调函数中获取数据以进行进一步处理?

在Ember Model中进行进一步处理之前,如何等待find方法完成

如何从ldapsearch结果创建电子邮件地址列表以进行进一步处理?

从边缘图像中提取成分并存储以进行进一步处理

在特定位置获取参数以进行进一步的管道处理

将文件发送到应用程序以进行进一步处理

在JavaScript中拆分字符串以进行进一步处理

无需下载视频即可捕获 YouTube 视频以进行进一步处理

Clojure中的“劣等”过程-重定向异步输出以进行进一步处理

将OctetString数据解压缩为变量以进行进一步处理

Shiny如何动态选择导入的数据集的列以进行进一步分析

如何使用value_counts()返回的值进行进一步的计算?

Codeigniter模型:如何使用查询中的值进行进一步的计算?

什么是处理多个异步操作和处理各进行进一步的处理最好的方法?

如何进一步停止处理请求?

如何进一步对网站进行抓取?