Я іноді займаю довгу 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припиненню обробляти більше даних, як тільки дитина помер, і замість цього продовжувати обробку?
xargs ... bash -c '...;exit 0'або навітьxargs ... bash -c '... || echo erk'
parallel -j 1це можливе рішення для злому.
xargsверсію 4.4.2 дюйму,debian wheezyі схоже, що все працює нормально, навіть якщо я вбиваю конкретнийsleepпроцес. Яку версіюxargsви використовуєте? можливо, вони вирішили проблему в останній версії.