Thỉnh thoảng tôi chạy các xargs
cô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 đã xargs
chế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 xargs
dừ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 1
là một giải pháp hack có thể.
xargs
phiên bản 4.4.2debian wheezy
và có vẻ như mọi thứ đều chạy tốt ngay cả khi tôi giết mộtsleep
quy trình cụ thể . Phiên bản nàoxargs
bạn đang sử dụng? có thể họ đã sửa vấn đề trong phiên bản mới nhất.