Czasami wykonuję długie xargs
prace z dnia na dzień i naprawdę denerwuje mnie odkrycie, że xargs
umarł gdzieś pośrodku, na przykład z powodu błędu segmentacji w jednym szczególnym przypadku, jak to miało miejsce tej nocy.
Jeśli nawet jedno xargs
dziecko zostanie zabite, nie przetwarza już żadnych danych wejściowych:
Konsola 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>
Konsola 2:
[09:35:54] kill 5601
Czy mogę w jakiś sposób zapobiec xargs
zatrzymywaniu przetwarzania danych po śmierci procesu potomnego i kontynuować przetwarzanie?
xargs ... bash -c '...;exit 0'
a nawetxargs ... bash -c '... || echo erk'
parallel -j 1
jest to możliwe rozwiązanie hakerskie.
xargs
wersji 4.4.2debian wheezy
i wygląda na to, że wszystko działa dobrze, nawet jeśli zabiję określonysleep
proces. Z której wersjixargs
korzystasz? być może rozwiązali problem w najnowszej wersji.