2016-04-19 11 views
0

私は他のマシンとssh接続を行い、それらのマシンに格納されているスクリプトを実行するbashスクリプトを使用します。SSHでbashスクリプトを開始

  1. SSHは、スクリプトを実行するようにノード1にスクリプトを3
  2. SSHを実行するためにマスターするスクリプト2
  3. SSHを実行するためにマスターするスクリプト1
  4. SSHを実行するために習得する1 など。

私の質問は次のとおりです:スクリプト1(30秒かかる)が始まる前にマスターのスクリプト2の実行が終了するのでしょうか?彼らは同時に走るだろうか?

+1

を完了する前に、スクリプトをバックグラウンド自身と終了にフォーク作業していないことを確認して再度

ssh master 'script1 &; script2 &; script3 &' 

、バックグラウンドで実行します。 – tripleee

答えて

1

これは、マシン上のbashスクリプト(サーバーへのSSH接続)とそれらのサーバー上のスクリプトがどのように機能するかに依存します。

例:次のコマンドは、スクリプト1,2、および3が手続き型であり、終了する前にバックグラウンドで作業をフォークしない限り、完全に手続き型であり、並列化されません(つまり、スクリプトが終了すると)

ssh master 'script1' 
ssh master 'script2' 
ssh master 'script3' 

これは、あなたは、このように同時にスクリプト1、2と3を実行し、バックグラウンドにこれらのスクリプトをフォークで作業を並列化することができ

ssh master 'script1; script2; script3' 

ように簡略化することができます。ちょうど仕事がそれが行われるまで `ssh`は、特にあなたがない限り、実行され、他のコマンドと同様

0

です。

ssh master script1 
ssh master script2 

はあなたが行うことができます:私はちょうどここ@tripleeeよりも詳細な答えを与えている

sleep 10 
date 

sleep 10 & 
date 
1

...

はSCRIPT1終了後のスクリプト2を実行します比較1つの接続で同じ:

ssh master 'script1 ; script2' 

manualを引用するには

ssh master 'script1 &; script2 &' 

:それらは同時に実行する

コマンドが制御演算子&によって終了された場合、シェルはサブシェルで背景でコマンドを実行します。

は一つの接続に倍数コマンドを実行する方法についての記事(herehereなど)があります。