web-dev-qa-db-ja.com

systemdユニットがbashスクリプトでアクティブかどうかをテストします

CentOs7ディストリビューションにバインドサーバーを自動的にインストールするスクリプトを書いています。

systemctl statusで立ち往生しています。これは、エラーコードを生成しないためです(ステータスはエラーではないため、正しいです)。

私が欲しいのは、サービスが開始されている(アクティブである)かどうかを確認することです。これを行うための最良かつ効率的な方法は何ですか?

10
math

サービスがアクティブかどうかを確認する最良の方法は、systemctl is-activeコマンドを使用することです。

# systemctl start sshd
# systemctl is-active sshd >/dev/null 2>&1 && echo YES || echo NO
YES
# systemctl stop sshd
# systemctl is-active sshd >/dev/null 2>&1 && echo YES || echo NO
NO
32
larsks

シェルスクリプトをチェックインする場合は、次の操作を実行できます。

if (systemctl -q is-active some_application.service)
    then
    echo "Application is still running."
    exit 1
fi

アプリケーションが実行されていないかどうかを確認するには、条件に感嘆符を追加するだけです。

2
voliveira89