1

Ruby スクリプトがいくつかあります: a.rbb.rbおよびc.rb. これらのスクリプトは、対応するラッパー シェル スクリプトから呼び出されます: a.shb.shおよびc.sh.

これらのスクリプトはすべて分散環境にあります。

`a.sh` and `a.rb` are on serverA
`b.sh` and `b.rb` are on serverB
`c.sh` and `c.rb` are on serverC

分散環境で現在実行されているすべてのスクリプトをチェックするスクリプトcall.rbとそのラッパースクリプトを作成する必要があります。call.sh

私が持っているさまざまなホストと、これらのさまざまなホストと通信する方法を決定するロジックがあります。

Ruby スクリプトが実行されている場合、コマンドは次のとおりです。

ps aux 

ショー:

ruby a.rb

現在実行中のさまざまなスクリプトを照会する方法についてはわかりません。システムで実行されている他の Ruby スクリプトもある可能性があることに注意しa.rbb.rbくださいc.rb

4

3 に答える 3

1

ハートビート チェックを行っている場合、またはキープアライブ チェックを設定している場合、起動時にファイルに PID を保存し、終了時にファイルを削除しないのはなぜですか?

構成要素は次のとおりです。

  • $$実行中のスクリプトの現在のプロセス ID です。
  • Ruby はBEGIN {}、変数が定義される前に、起動時に指定されたブロックを実行します。これを使用して PID ファイルを作成できます。通常"#{ File.basename($0) }.pid"、ファイル名の作成には次のようなものを使用します。
  • Ruby はEND {}、シャットダウン時に名前が付けられたブロックを最後のタスクとして実行します。これを使用して、PID ファイルを削除できます。
  • PID ファイルを既知の場所に置きます。それがどこにあるかは、OS を把握するための演習として残されています。

ウォッチドッグにそれらをスキャンさせ、PID を取得し、PID ID のプロセス リストをスキャンし、おそらくそれらを pid ファイルの名前に関連付けます。

ケーキにかけるアイシングをもっと考えてみよう。

于 2013-05-15T15:06:35.997 に答える
0

次のように、SSH 経由でコマンドを実行するだけです。

ssh user@host "ps -ef | grep '(ruby|[^.]+\.rb)'"

Greppsスクリプト名の出力を ping することもできます。

ps -ef | grep '(a.rb|b.rb|c.rb)'

編集: grep 自体をプロセス リストに表示したくない場合は、次のようにフィルター処理します。

ps -ef | grep '(a.rb|b.rb|c.rb)' | grep -v grep
于 2013-05-15T11:48:52.333 に答える