
リモートサーバーにデプロイする必要があるアプリケーション用のビルドスクリプトを作成しようとしています。スクリプトは実行中のTomcatインスタンスを終了し、いくつかの操作(ファイルのコピー/移動)を実行し、Tomcatインスタンスを再起動してから、2番目のノードでプロセスを繰り返す必要があります。
個々のステップは非常に簡単です。私が直面する困難は、時間を制御することです。スクリプトがファイルの移動を開始する前に、Tomcatアプリケーションサーバーがシャットダウンされていることを確認したいと思います。また、2番目のインスタンスでシャットダウンを開始する前に、サーバーの起動が完了していることを確認したいと思います。
手動で「スタンバイ」タイマーを設定する以外に、シェルスクリプトでこれを行う方法はありますか?
答え1
systemctl
サービスの状態を照会するために使用できます。
systemctl is-active tomcat.service
~から手動
アクティブモードで...
指定されたデバイスのうちアクティブな状態(つまり実行中)があることを確認してください。 1つでも有効な場合は終了コード0を返し、それ以外の場合は0以外の値を返します。 --quiet を指定しないと、現在のデバイス状態も標準出力として出力されます。
同じマニュアルには、systemctl status <unit>
終了状態に明示的に依存することが「不完全」であると見なされるという内容が記載されています。