スクリプトを使用してカスタムサービスの状態を確認する

スクリプトを使用してカスタムサービスの状態を確認する

WebLogicホスティングサーバーを起動するいくつかのシェルスクリプトがあります。以下を実行する基本スクリプトを設計する必要があります。

  • 実行コンポーネント\ホスティングサーバーシェルスクリプト
  • コンポーネントのポートが2分間リッスンしていることを確認してください(この値は何でも可能ですが、これらのサービスは起動に2分以上かかるべきではありません)。
  • 2分以内にサービスが開始された場合は、次のサービスを開始し、それ以外の場合はサービスの開始に失敗したというログメッセージを作成して続行します。

スクリプトは次のとおりです。

svcs = some_array_of_svcs

log  = '/path_to_log/log.txt'

' start each service'
for each $svc in $svcs
   echo "starting $svc" >> ${log}
   . /path_to_scripts/$svc
' check to see if the service started
loop for max 2 mins
   if port is listening
      echo 'Service started successfully' >> ${log}
      start the next service
   else
      echo 'Service did not start within the specified timeout' >> ${log}
      start the next service
   end if
next

ポートの状態を確認するにはコードが必要ですNサービスあたりの時間(分)

ベストアンサー1

netcatは救助されています... NetcatはTelnetと非常によく似ていますが、いくつかの素晴らしい追加オプションがあります。この場合、特別な用途の1つは、接続が有効であることを確認する-zです。タイムアウト変数を使用すると、システムにサービスが受信中であるかどうかを繰り返し確認することができます。

ローカルではSSHを有効にしましたが、Telnetは有効にしていません。

$ nc -zw10 localhost 22
$ echo $?
0
$ nc -zw10 localhost 23
$ echo $?
1

テストをより明確にするために、前述のタイムアウト2分を仮定します。 4回確認し、毎回30分間タイムアウトします。日付スタンプはより良いかもしれませんが、これは始まりです。

for i in {1..4}; do
  nc -zw30 localhost 22
  x=$?
  [[ $x -eq 0 ]] && break
done
if [[ $x -eq 0 ]]; then
  echo 'Service started successfully' >> ${log}
else
  echo 'Service did not start within the specified timeout' >> ${log}
fi
start next service

おすすめ記事