サービスを開始または停止した後、systemdにサービスのステータスを表示させることはできますか?


8

systemdにinit.dスクリプトの機能を実行させ、開始または停止のコマンドを手動で指定した後、サービスのステータスを自動的に表示しようとしています。これはどういうわけか可能ですか?

systemdはバックグラウンドで実行されているため、残念ながらすぐにポップアップし、ステータスを表示するために2番目のコマンドを実行する必要があります。

すなわち。取得しようとしています

service nginx status

私がした後に自動的に実行する

service nginx start

または

service nginx restart

(または脳で損傷したsystemd、 systemctl start nginx.service


1
私は「脳が損傷した」コマンドを使用しています(私はそれらが好きです!)。彼らは実際にはすべてがうまくいっていても何も言わないが、何かが失敗したときにあなたに知らせるでしょう。少なくともopenSUSE 13.1ではそうです。彼らが失敗したとき、彼らは「沈黙」していると確信していますか やってみましたsystemctl start nginx.service && echo SUCCESS || echo failureか?
ホイヘンス

2
@Huygensは、すべての失敗を検出できるsystemdに依存していません。最も確実に、サイレントな失敗または警告が発生する可能性があります。プロセスはバックグラウンドで開始され、systemdが制御を終了します。init.dとはまったく異なります。dPIDファイルの作成が失敗した場合に一貫して発生することがわかります。手動での起動または再起動後にステータスを取得することは、systemd(および私の質問のポイント)では絶対に必要です。
ck_

説明をありがとう、私はここで何かを学びました!それでは、この質問への回答を楽しみにしています!
ホイヘンス2014

より優れたsystemd構文とは異なり、一度に複数のサービスを操作することができないため、脳死の構文はサービス1です。systemctl stop service1 service2 service3
god

1
systemctl@Huygensが示唆したように、終了ステータスをチェックするときに同じ不整合が引き続き表示される場合、問題は、nginx.service正常に開始するが、その後クラッシュする可能性があります。ジャーナルまたはNginxログを確認してください。
Amir

回答:


1

ユースケース用の組み込みコマンドはないため、お気に入りのシェルまたは簡単なスクリプトラッパーのエイリアスを作成する必要があります。


0

systemdをより「冗長」にするには、次の行を追加/コメント解除して/etc/systemd/journald.confから再起動します。

ForwardToConsole=yes
MaxLevelConsole=debug
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.