2014-06-23 10 views
6

मैं जीएनयू समांतर का उपयोग कर कई अलग-अलग सर्वरों (25 तक) पर नौकरी चला रहा हूं।जीएनयू समानांतर - कौन सा काम विफल रहा?

खोल स्क्रिप्ट जो इस वर्तमान में लागू करता है:

parallel --tag --nonall -S $some_list_of_servers "some_command" 
state=$? 
echo -n "RESULT: " 
if [ "$state" -eq "0" ] 
then 
    echo "All jobs successful" 
else 
    echo "$state jobs failed" 
fi 
return $state 

जहां some_list_of_servers एक सरणी है, और install_command है, उदाहरण के लिए, Git लाने।

जो मैं चाहता हूं वह कितनी नौकरियां विफल रही है उससे कहीं अधिक जानकारी है। मैं जानना चाहता हूं कि कौन सा आदेश, और कौन सा सर्वर विफल रहा।

मैं मैन पेज, और Google, और SO के माध्यम से रहा हूं लेकिन स्विच (एसएस) जिसे मैं ढूंढ रहा हूं उसे नहीं मिला।

किसी भी मदद की सराहना की सराहना की।

WeeDom जवाब में

संपादित करें 1 उत्तर करने के लिए:

मैंने कोशिश की है कि, और कुछ अजीब हो रहा है।

[email protected]: ~/$ parallel --tag --nonall -j8 --joblog test.log -S host1,host2 uptime 
host2 10:41:17 up 36 days, 20:45, 1 user, load average: 0.00, 0.00, 0.00 
host1   10:41:17 up 22:34, 3 users, load average: 0.06, 0.11, 0.04 
[email protected]: ~/$ cat test.log 
Seq  Host Starttime  Runtime Send Receive Exitval Signal Command 
1  host1  1403689277.067 0.519999980926514  0  0  0  0  uptime 

कोई फर्क नहीं पड़ता, मैं केवल test.log

मैं एक अनुवर्ती प्रश्न यहाँ जोड़ दिया है में पूरा करने के लिए पिछले एक पाने के लिए लग रहे हैं कि कितने मेजबान मैं एस में जोड़ने के लिए: GNU Parallel - --joblog only logging last job

+0

सिर्फ इतना है कि यह ढूंढने योग्य है, कारण यह है कि मैं था ही हो रही है देता है --job-log से एक पंक्ति यह थी कि मैं समानांतर के पुराने संस्करण का उपयोग कर रहा था जिसमें एक ज्ञात बग था। समांतर – WeeDom

उत्तर

5

आप दस्तावेज़ों में दिखाए गए अनुसार --joblog option का उपयोग करना चाहते हैं। जीएनयू समानांतर भी --resume-failed के साथ असफल लोगों को पुनरारंभ करने की अनुमति देता है।

जैसे, इस स्क्रिप्ट चलाने: इस तरह कई मेजबान पर

#!/bin/bash 
jobmod=$(($1 % 3)) 
if [ $jobmod == 0 ] 
then 
    exit 1 
else 
    exit 0 
fi 

:

$ seq 1 10 | parallel --joblog out.log -S "srv01,srv02,srv03,srv04" ./failjob 

$ more out.log 
Seq Host Starttime Runtime Send Receive Exitval Signal Command 
1 srv01 1403542514.713 0.267 0 0 0 0 ./failjob 1 
3 srv02 1403542514.717 0.266 0 0 1 0 ./failjob 3 
4 srv03 1403542514.719 0.266 0 0 0 0 ./failjob 4 
2 srv04 1403542514.715 0.397 0 0 0 0 ./failjob 2 
5 srv01 1403542514.983 0.231 0 0 0 0 ./failjob 5 
6 srv02 1403542514.986 0.368 0 0 1 0 ./failjob 6 
7 srv03 1403542514.988 0.388 0 0 0 0 ./failjob 7 
8 srv04 1403542515.121 0.437 0 0 0 0 ./failjob 8 
9 srv01 1403542515.221 0.343 0 0 1 0 ./failjob 9 
10 srv02 1403542515.356 0.388 0 0 0 0 ./failjob 10 
+0

को अपग्रेड करके हल किया गया था: -एसएसआरवी {01..04} –

+0

यह बिल्कुल सही लगता है, लेकिन मुझे --joblog विकल्प में कोई समस्या है - यह केवल आखिरी नौकरी को लॉगिंग कर रहा है। मैंने यहां एक फॉलो-अप प्रश्न जोड़ा है: http://stackoverflow.com/questions/24408726/gnu-parallel-joblog-only-logging-last-job – WeeDom

संबंधित मुद्दे