【发布时间】:2014-06-23 15:55:08
【问题描述】:
我正在使用 GNU 并行在几个不同的服务器(最多 25 个)上运行作业。
目前实现这一点的 shell 脚本是这样的:
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 fetch。
我想要的是更多信息,而不仅仅是有多少工作失败了。我想知道哪个命令和哪个服务器失败了。
我已经浏览了手册页、谷歌和 SO,但找不到我正在寻找的开关。
感谢任何帮助。
WeeDom
针对答案 1 进行编辑:
我试过了,但发生了一些奇怪的事情。
weedom@host1: ~/$ 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
weedom@host1: ~/$ cat test.log
Seq Host Starttime Runtime Send Receive Exitval Signal Command
1 host1 1403689277.067 0.519999980926514 0 0 0 0 uptime
无论我添加多少主机到-S,我似乎只能将最后一个完成到test.log中
我在这里添加了一个后续问题:GNU Parallel - --joblog only logging last job
【问题讨论】:
-
只是为了便于查找,我只从 --job-log 中得到一行的原因是我使用的是旧版本的并行程序,它有一个已知的错误。问题已通过并行升级解决