2010-04-16 88 views

回答

2

如果你想要做的是发射一堆远程命令,你可以使用perl。你可以“打开”一个ssh命令并将结果传回给perl。 (当然你需要设置密钥,以允许无密码的访问)

open (REMOTE, "ssh [email protected] \"myScript\"|"); 
while (<REMOTE>) 
{ 
    print $_; 
} 

你想要手艺与你的机器名称的循环,火了一个每个。之后,只要非阻塞读取文件句柄以在数据可用时将其拉回。

1

parallel可以安装在您的中央节点上,并可用于跨多台机器运行命令。

在下面的示例中,多个ssh连接用于在远程主机上运行命令。 (-j是在中央节点上同时运行的作业数量)。然后可以将结果传送到执行“减少”阶段的命令。 (在这个例子中排序然后uniq)。

parallel -j 50 ssh {}“ls”::: host1 host2 hostn |排序| uniq的-c

这个例子假定“无钥匙ssh登录”已设置的中央节点与集群中的所有机器之间。

当运行更复杂的远程命令“ls”时,正确转义字符可能会非常棘手,有时您必须转义转义字符。你提到bashreduce,它可能会简化这个。