2014-06-23 39 views
6

Tôi đang chạy một công việc trên một số máy chủ khác nhau (tối đa 25) bằng cách sử dụng GNU song song.GNU Parallel - công việc nào không thành công?

Các kịch bản shell mà thực hiện này hiện đang làm:

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 

nơi some_list_of_servers là một mảng, và install_command là, ví dụ, git fetch.

Những gì tôi muốn là LOT biết thêm thông tin hơn là chỉ có bao nhiêu công việc thất bại. Tôi muốn biết lệnh nào và máy chủ nào bị lỗi.

Tôi đã trải qua những trang người đàn ông, và google, và SO nhưng không thể tìm thấy công tắc (es) mà tôi đang tìm kiếm.

Bất kỳ sự giúp đỡ biết ơn đánh giá cao.

WeeDom

EDIT để phản ứng lại trả lời 1:

Tôi cố gắng đó, và một cái gì đó kỳ lạ đang xảy ra.

[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 

Không có vấn đề bao nhiêu host tôi thêm vào -S, tôi dường như chỉ nhận được người cuối cùng để hoàn thành test.log

Tôi đã thêm một câu hỏi theo dõi ở đây: GNU Parallel - --joblog only logging last job

+0

chỉ để nó có thể tìm thấy, lý do mà tôi đã chỉ nhận được một dòng từ --job-log là tôi đang sử dụng một phiên bản cũ của song song có lỗi đã biết. Vấn đề đã được giải quyết bằng cách nâng cấp song song – WeeDom

Trả lời

5

Bạn muốn sử dụng --joblog option, như được hiển thị trong tài liệu. Gnu song song thậm chí cho phép khởi động lại chỉ những cái không thành công với --resume-failed.

ví dụ, chạy kịch bản này:

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

trên một số máy chủ như thế này:

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

cho

$ 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

ngắn với: -Ssrv {01..04} –

+0

này dường như hoàn toàn đúng, nhưng tôi đang gặp một vấn đề với các tùy chọn --joblog - nó chỉ đăng những công việc cuối cùng mà chạy. Tôi đã thêm một câu hỏi theo dõi ở đây: http://stackoverflow.com/questions/24408726/gnu-parallel-joblog-only-logging-last-job – WeeDom

Các vấn đề liên quan