我制作了一个shell脚本,它会抓取一些日志并将输出放在一个文本文件中。基本上,此脚本在其他10台服务器上运行,输出文本文件通过scp
复制到主机服务器。现在从主机服务器我需要一次调用所有脚本,以便在最短时间内(几乎并行)获取所有10个日志文件。每个服务器上的脚本大约需要10秒才能完成。
谢谢!
答案 0 :(得分:1)
您可能需要查看GNU parallel。 ClusterSSH
和pconsole
也可能有用,如上所述[{3}}。
如果您坚持创建自己的工具,here可能会有用。
答案 1 :(得分:0)
可能的解决方案是在主机服务器上创建子进程,它基本上会尝试ssh服务器,在服务器端,你可以把命令放在〜/ .bash_profile或〜/ .bashrc中运行shell脚本登录时运行。您也可以在ssh之后管道命令。如果您遇到指纹确认问题,可以将主机密钥添加到服务器.ssh文件夹中的授权密钥。应该很容易做到。 *并且您可以并行启动子流程
答案 2 :(得分:0)
要几乎同时开始记录,请将进程发送到后台:
host_urls=( url1 ... url10 )
for u in ${host_urls[@]}; do
ssh ... $u your_server_logging_script &
done
这将导致比任何网络故障都小得多的延迟,因此如果不实际同步服务器上的时间或编写额外的代码,这是最好的。
your_server_logging_script
当然会包含grep
和scp
调用以将文件恢复到中央服务器。不要忘记单独命名文件(例如主机前缀)或者它们会相互覆盖。
答案 3 :(得分:0)
您可以使用pdsh
http://sourceforge.net/projects/pdsh/