2014-04-14 9 views
8

मैं समानांतर rsync प्रक्रिया शुरू करने के लिए एक स्क्रिप्ट बनाया था कैसे बाहर निकलें कोड प्राप्त करने के:जब xargs का उपयोग कर (समानांतर)

#! /bin/bash 
LIST=$1 
DEST_DIR=$2 
RSYNC_OPTS=$3 
#echo "rsyncing From=$SRC_DIR To=$DEST_DIR RSYNC_OPTS=$RSYNC_OPTS" 
echo $LIST|xargs -n1 -d, echo|xargs -n1 -P 0 -I% rsync --rsync-path='sudo rsync' ${RSYNC_OPTS} % ${DEST_DIR} 

फिर, मैं rsync प्रक्रिया के निकास स्थिति पाने के लिए समस्या है। मुझे पता है कि पाइपस्टैटस की एक सरणी प्राप्त करना संभव है, लेकिन मुझे यह जानने के लिए बाहर निकलने के कोड को पकड़ने की आवश्यकता है कि rsync सफलतापूर्वक बनाया गया था या नहीं।

कोई भी जानता है?

+0

आपने पहले ही '$ PIPESTATUS' का उल्लेख किया है:' $ {PIPESTATUS [2]} 'में दूसरे 'xargs' कमांड की निकास स्थिति होगी। यह 123 होगा यदि 'rsync' 1-125 की स्थिति से बाहर निकला है (यहां बाहर निकलें स्थिति अनुभाग देखें: http://unixhelp.ed.ac.uk/CGI/man-cgi?xargs) –

+0

हाय जोश, धन्यवाद तुम्हारा जवाब। फिर भी, मुझे rysnc के निकास कोड की आवश्यकता है, न कि xargs निकास कोड। ऐसा कुछ: http://wpkg.org/Rsync_exit_codes – bLuEdDy

+0

सुनिश्चित नहीं है कि आप इस तरह के xargs का उपयोग कर rsync की विशिष्ट निकास स्थिति प्राप्त करने में सक्षम होंगे, इसे xargs द्वारा मुखौटा किया जाएगा। शायद आप '$ LIST' के माध्यम से लूप कर सकते हैं? –

उत्तर

6

xargs के लिए मैन पेज संभावित निकास स्थिति मान दिखाता है, हालांकि यह केवल एक एकल निकास निकास कोड उत्पन्न कर सकता है, न कि प्रति बच्चे बाहर निकलने वाला कोड। आप इन विकल्पों में से एक कोशिश कर सकते:

  • प्रक्रिया xargs कि spawns अपने से बाहर निकलें कोड प्रिंट और माता पिता के काम सब बाहर निकलें कोड आउटपुट पार्स प्रत्येक rsync के लिए बाहर निकलने के कोड निर्धारित करने के लिए किया है।
  • --joblog विकल्प के साथ जीएनयू parallel का उपयोग करें। इससे एक फाइल बनाई जाएगी जिसमें सभी आदेश शामिल होंगे जो इसके बाहर निकलने वाले कोड और अन्य जानकारी के साथ समानांतर में चलाए जाएंगे। इस फ़ाइल को parallel के बाद पार्स किया जा सकता है यह निर्धारित करने के लिए कि कौन से rsync कमांड विफल हुए और उनके संबंधित त्रुटि कोड।
संबंधित मुद्दे