
スクリプトに慣れていません。サーバーでサービスを監視したいです。 2つのスクリプトがあります。 1 - サービスが実行されているかどうかを確認する(checking.sh)2 -サービスを開始する(start.sh)
2つのスクリプトを1つにまとめて(monitor.sh)、それを予約/クローンしたいと思います。最初のスクリプトの結果に基づいて2番目のスクリプトを実行する方法最初のスクリプトの結果が0の場合はサービスを開始する必要があります(最初のスクリプトの結果が1の場合は2番目のスクリプトを実行する必要があります)。 、2番目のスクリプトを実行してプライマリサーバーをシャットダウンする必要はありません。
答え1
これは何ですか?終了コードはい。したがって、モニター・スクリプトには次のことができます。
#!/bin/bash
# monitor.sh -- checks if a Thing is doing its Thing
if [[ -r /var/run/myjob.pid ]]; then
if kill -0 $( cat /var/run/myjob.pid ); then
exit 0 # The process is alive, job is presumably running
else
exit 1 # Well, we had a PID file, but it was orphaned.
fi
else
exit 2 # no PID file, job presumably not running
fi
処理したい状態ごとに異なる終了コードを使用します。その後、サービス検査官の場合:
#!/bin/bash
# check.sh -- Checks to see if Thing is Thinging and, if not, start it
if ! /path/to/monitor.sh; then
/path/to/start.sh
fi
次に、ジョブスクリプトを実行します。
#!/bin/bash
# start.sh - do a Thing
if [[ -r /var/run/myjob.pid ]]; then
echo "A Thing is already being done!" 1>&2
exit 1
else
echo $$ > /var/run/myjob.pid
trap 'rm /var/run/myjob.pid' EXIT
do_Thing_related_things
fi