I sometimes run long xargs jobs overnight and it is really annoying to discover in the morning that xargs died somewhere in the middle, for example because of a segmentation fault in one single special case, as happened this night.If even one xargs child is killed, it does not process any more input:Console 1:[09:35:48] % seq 40 | xargs -i --max-procs=4 bash -c 'sleep 10; date +%H:%M:%S {};'xargs: bash: terminated by signal 1509:35:58 309:35:58 409:35:58 2<Exit with code 125>Console 2:[09:35:54] kill 5601Can I somehow prevent xargs from stopping to process any more input once a child process dies and instead continue processing?
How to make `xargs` ignore child's exit and keep processing further
kill;xargs;signals
No, you can't. From the xargs sources at savannah.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;There's no flag around that check, or around the function that calls it. It does seem to be related to max procs, which I suppose makes sense: if you set max procs high enough, it won't bother checking until it's hit the limit, which you might get to be never.A better solution for what you're trying to do might be to use GNU Make:TARGETS=$(patsubst %,target-%,$(shell seq 1 40))all: $(TARGETS)target-%:    sleep 10; date +%H:%M:%S $*Then:$ make -k -j4 will have the same effect, and give you much better control.