Thỉnh thoảng tôi chạy các xargscông việc dài qua đêm và thật khó chịu khi phát hiện ra vào buổi sáng đã xargschết ở đâu đó ở giữa, chẳng hạn vì một lỗi phân khúc trong một trường hợp đặc biệt, như đã xảy ra đêm nay.
Nếu thậm chí một xargsđứa trẻ bị giết, nó không xử lý thêm bất kỳ đầu vào nào:
Bảng điều khiển 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>
Bảng điều khiển 2:
[09:35:54] kill 5601
Tôi có thể bằng cách nào đó ngăn chặn xargsdừng xử lý thêm bất kỳ đầu vào nào sau khi một tiến trình con chết đi và thay vào đó tiếp tục xử lý?
xargs ... bash -c '...;exit 0'hay thậm chíxargs ... bash -c '... || echo erk'
parallel -j 1là một giải pháp hack có thể.
xargsphiên bản 4.4.2debian wheezyvà có vẻ như mọi thứ đều chạy tốt ngay cả khi tôi giết mộtsleepquy trình cụ thể . Phiên bản nàoxargsbạn đang sử dụng? có thể họ đã sửa vấn đề trong phiên bản mới nhất.