我有一个批处理脚本,它必须通过 plink[putty] 在大约 10 台 linux 机器上触发某个 shell 脚本。但是当我触发 shell 脚本时,问题是控件转到 shell 脚本。它运行了大约 10 个小时,然后将控件返回到批处理。现在我的批次继续用于第二台 linux 机器并等待 10 小时,依此类推......
我的要求是同时在所有 linux 机器上触发 shell 脚本。
它可以是触发 shell 脚本返回 ctrl 以在其他机器上批量触发之类的东西也可以。
使用 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
如果您将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