Gnu Parallel 在与 (--keep-order) 选项一起使用时会忽略 (--sshlogin) 属性顺序

Gnu Parallel 在与 (--keep-order) 选项一起使用时会忽略 (--sshlogin) 属性顺序

这是我的示例,我请求作业先在 LNXVP1262 上运行,然后再在 LNXVP1251 上启动。

date ; echo 'hostname;date;sleep 10;date' | parallel --no-run-if-empty --will-cite --onall --keep-order --joblog ${runDir}/jobLog.txt --results ${runDir}/resultsDir --jobs 1 --sshlogin LNXVP1262,LNXVP1251  

结果:

Wed Sep  6 17:35:01 EDT 2023

LNXVP1251

Wed Sep  6 17:35:02 EDT 2023

Wed Sep  6 17:35:12 EDT 2023

LNXVP1262

Wed Sep  6 17:35:13 EDT 2023

Wed Sep  6 17:35:23 EDT 2023

我如何确保结果是:

2023 年 9 月 6 日星期三 17:35:01 EDT

LNXVP1262

Wed Sep  6 17:35:02 EDT 2023

Wed Sep  6 17:35:12 EDT 2023

LNXVP1251

Wed Sep  6 17:35:13 EDT 2023

Wed Sep  6 17:35:23 EDT 2023

(--sshlogin) 登录顺序是否始终按字母顺序排列(我假设)或者是否有办法强制排序。我猜想有一种黑客手段是按排序顺序创建 SSH 机器别名,并希望并行可以使用别名,但这样很丑陋。

答案1

man parallel

   --keep-order
   -k  Keep sequence of output same as the order of input.
       :
       If used with --onall or --nonall the output will grouped by
       sshlogin in sorted order.

因此sshlogin使用时 s 将进行排序-k

如果不使用,则-k输出的顺序将基于哪个作业先完成。

在命令行中给出的顺序sshlogin不起作用:

$ parallel --sshdelay 1 --tag -S127.0.0.{22,1,33,222,11,3,2,111} --onall echo ::: foo
127.0.0.1       foo
127.0.0.11      foo
127.0.0.111     foo
127.0.0.2       foo
127.0.0.22      foo
127.0.0.222     foo
127.0.0.3       foo
127.0.0.33      foo
$ parallel --sshdelay 1 --tag -S127.0.0.{22,33,11,222,111,1,3,2} --onall echo ::: foo
127.0.0.1       foo
127.0.0.11      foo
127.0.0.111     foo
127.0.0.2       foo
127.0.0.22      foo
127.0.0.222     foo
127.0.0.3       foo
127.0.0.33      foo

相关内容