2010-04-16 70 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,它可能會簡化這個。