मैं कभी-कभी 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उपयोग कर रहे हैं? हो सकता है कि उन्होंने नवीनतम संस्करण में समस्या को ठीक कर दिया हो।