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