บางครั้งฉันทำงานนานมากใน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
คุณใช้เวอร์ชั่นไหน อาจเป็นเพราะพวกเขาได้แก้ไขปัญหาในรุ่นล่าสุดแล้ว