1

我制作了一个 shell 脚本,它 greps 一些日志并将输出放在一个文本文件中。基本上这个脚本在其他 10 个服务器上运行,输出文本文件通过scp. 现在,我需要从主机服务器一次调用所有脚本,以便在最短的时间内(几乎并行)获得所有 10 个日志文件。每台服务器上的脚本大约需要 10 秒才能完成。

谢谢!!

4

4 回答 4

1

您可能想看看GNU parallelClusterSSH并且pconsole也可能有用,如此所述。

如果您坚持创建自己的工具,本教程可能会很有用。

于 2012-08-18T20:23:36.393 回答
0

要几乎同时启动日志记录,请将进程发送到后台:

host_urls=( url1 ... url10 )
for u in ${host_urls[@]}; do
  ssh ... $u your_server_logging_script &
done

这将导致比任何网络故障都小得多的延迟,因此这是您可以在不实际同步服务器时间或编写额外代码的情况下做的最好的事情。

your_server_logging_script当然会包含grepscp调用以将文件返回到中央服务器。不要忘记对文件进行唯一命名(例如以主机为前缀),否则它们会相互覆盖。

于 2012-08-18T20:03:11.557 回答
0

可能的解决方案是在主机服务器上创建子进程,它基本上会尝试对服务器进行 ssh,在服务器端,您可以将运行 shell 脚本的命令放在 ~/.bash_profile 或 ~/.bashrc 中,它们基本上会在日志上运行在。您还可以在 ssh 之后管道命令。如果您遇到指纹确认问题,您可以将主机密钥添加到服务器 .ssh 文件夹中的授权密钥中。它应该很容易完成。*您可以并行启动子流程

于 2012-08-18T19:51:24.937 回答
0

您可以使用分布式 shell,例如pdsh http://sourceforge.net/projects/pdsh/

于 2012-08-19T21:12:35.437 回答