gnu parallel:使用主机名作为前缀输出

gnu parallel: Prefix output with hostname(s)

当我在多个主机上 运行 相同的命令时,是否可以在 gnu parallel 的输出前加上前缀?

我在一个工作池中有 10 台工作机器,其中任何一台都可以接手这份工作,我想通过 grep 查看所有机器的日志文件来找出是哪台工作机接手了它:

parallel --nonall -S host1,host2,host3 grep job_id_123 /var/log/my_log.log

打印如下内容:

initing job_id_123
doing phase1 job_id_123
doing phase2 job_id_123
wrapping up job_id_123

我想要的是

host2: initing job_id_123
host2: doing phase1 job_id_123
host3: doing phase2 job_id_123
host1: wrapping up job_id_123

我知道我能做到:

parallel --nonall -S host1,host2,host3 "hostname && grep job_id_123 /var/log/my_log.log"

但前缀是我所希望的。

我在 Ubuntu precise (12.04.5 LTS)

上使用 GNU parallel 20160422

当 运行 多台机器时,您可以使用 --tag 选项标记每个服务器的输出。因此,在下面的示例中,我要求本地主机(iMac)和两个 Raspberry Pi 打印它们的 OS 名称:

parallel --nonall --tag -S :,pi1,pi2 uname
:   Darwin
pi1 Linux
pi2 Linux