0

plink[putty] を介して、10 台ほどの Linux マシンで特定のシェル スクリプトをトリガーする必要があるバッチ スクリプトがあります。しかし、シェル スクリプトをトリガーすると、問題は制御がシェル スクリプトに移動することです。これは約 10 時間実行され、制御がバッチに戻ります。これで、私のバッチは 2 番目の Linux マシンに進み、10 時間待ちます...

私の要件は、すべての Linux マシンで同時にシェル スクリプトをトリガーすることです。

シェルスクリプトをトリガーしてctrlを返し、他のマシンでバッチトリガーをトリガーするようなものでもかまいません。

4

2 に答える 2

0

シェルとして使用bashしている場合は、そのタグを含める必要があります。(タグの「フォロワー」の数が比較的少ないことに注意してください。)

最新の Linux/Unix シェルを想定すると、質問に対する答えは&、リモート マシンへの接続を確立する行に文字を追加することです。&「このプロセスをバックグラウンドで実行する」ことを意味します。

だから何か

#!/bin/bash 
# master script
ssh host1 "/path/to/remote/script/runMe" &
ssh host2 "/path/to/remote/script/runMe" &
ssh host3 "/path/to/remote/script/runMe" &
ssh host4 "/path/to/remote/script/runMe" &

あなたが探しているもののように聞こえます。

ログ情報を取得し、リモートの「runMe」のステータスを監視することは、コンサルテーションの関与または少なくとも 100 時間の実験の領域にあります。幸運を。

IHTH

于 2013-06-19T16:20:23.767 に答える
0

GNU Parallel を使用すると、次のことができます。

parallel --nonall -S host1,host2,host3,host4 /path/to/remote/script/runMe

GNU Parallel は、stdout と stderr からの出力がキャプチャされ、混合されないことを保証します。--tag を使用すると、各行の先頭にホストが追加されます。

parallel --tag --nonall -S host1,host2,host3,host4 /path/to/remote/script/runMe >output.stdout 2>output.stderr

詳細については、紹介ビデオをご覧ください: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

10 秒のインストール:

wget -O - pi.dk/3 | bash
于 2013-08-05T11:32:41.263 に答える