我很想知道尽可能快地在多台计算机的后台启动脚本的最佳方法。目前我正在这样做
为每个IP地址运行 ssh user @ ip -t“perl~ / setup.pl>&〜/ log&” &安培;
但是这需要时间,因为它单独尝试通过SSH连接到每个人以在该计算机的后台启动setup.pl。这需要时间,因为我有大量的机器来启动此脚本。
我尝试使用GNU parallel,但无法使其正常工作:
seq COUNT | parallel -j 1 -u -S ip1,ip2,... perl~ / setup.pl>& 〜/登录
但它似乎没有用,我看到脚本在目标机器上由GNU并行启动,但它停滞不前。我在日志中看不到任何内容。
使用GNU并行时我做错了什么
答案 0 :(得分:3)
GNU Parallel假定默认情况下它运行作业的机器并不重要 - 这对于计算通常是正确的。在你的情况下,它非常重要:你想在每台机器上找一份工作。 GNU Parallel也会给一个数字作为setup.pl的参数,你显然不希望这样。
幸运的是GNU Parallel 使用支持你想要的东西
http://www.gnu.org/software/parallel/man.html#example__running_the_same_command_on_remote_computers
我鼓励您阅读并理解其余的例子。
答案 1 :(得分:2)
我建议您使用pdsh
它允许您在多台计算机上运行相同的命令
用法:
pdsh -w machine1,machine2,...,machineN <command>
它可能不包含在你的Linux发行版中,所以通过yum或apt
获取它答案 2 :(得分:0)
尝试将ssh user@ip -t "perl ~/setup.pl >& ~/log &" &
包装在shell脚本中,并针对每个IP地址运行./mysctipt.sh &