0

我有一个批处理脚本,它必须通过 plink[putty] 在大约 10 台 linux 机器上触发某个 shell 脚本。但是当我触发 shell 脚本时,问题是控件转到 shell 脚本。它运行了大约 10 个小时,然后将控件返回到批处理。现在我的批次继续用于第二台 linux 机器并等待 10 小时,依此类推......

我的要求是同时在所有 linux 机器上触发 shell 脚本。

它可以是触发 shell 脚本返回 ctrl 以在其他机器上批量触发之类的东西也可以。

4

2 回答 2

0

使用 GNU Parallel,您可以:

parallel --nonall -S host1,host2,host3,host4 /path/to/remote/script/runMe

GNU Parallel 保证 stdout 和 stderr 的输出被捕获而不是混合。使用 --tag 每一行都将在主机前添加:

parallel --tag --nonall -S host1,host2,host3,host4 /path/to/remote/script/runMe >output.stdout 2>output.stderr

要了解更多信息,请观看介绍视频:https ://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

10秒安装:

wget -O - pi.dk/3 | bash
于 2013-08-05T11:32:41.263 回答
0

如果您将bash其用作外壳,则应为其添加一个标签。(请注意,您的标签的“关注者”数量相对较少。)

假设使用现代 Linux/Unix shell,您的问题的答案是将&字符附加到与远程计算机建立连接的行。&意思是“在后台运行这个过程”。

所以像

#!/bin/bash 
# master script
ssh host1 "/path/to/remote/script/runMe" &
ssh host2 "/path/to/remote/script/runMe" &
ssh host3 "/path/to/remote/script/runMe" &
ssh host4 "/path/to/remote/script/runMe" &

听起来像你在找什么。

捕获日志信息和监控远程“runMe”的状态属于咨询约定或您至少 100 小时的实验范围。祝你好运。

IHTH

于 2013-06-19T16:20:23.767 回答