私はRHEL 7を使用しており、特定のサービス「myservice.service」が無効になっているかどうかを知りたいです。残念ながら、以下を使用して:
journalctl -u myservice.service
実際のサービスの出力のみを表示しているようですが、ある時点で出力が停止した場合、これが原因かどうかはわかりません。
- サービスが終了したか
- systemdはまだサービスがアクティブであると考えていますが、基本的なコードの問題のため、実際のプロセス自体はもはや出力を生成しません。
デフォルトでは、systemctlステータスイベントログを取得する方法はありますか?
答え1
詳細については、システムログを確認してください。
Red Hatの場合:
/var/log/messages
Debian ベースのディストリビューションの場合:
/var/log/syslog
また、特定のサービスのログを見つける必要があります。次のようになります。
/var/log/<yourservice>.log
これらのログはすべて循環するため、.log.1と.log.x.gzで以前の情報を見つけることができます(これらのログを圧縮するか、zlessまたはviを使用する必要があります)。
良い検索
答え2
Linuxサービスが無効になるタイミングを正確に知る方法は?
systemdは、サービスが状態0で終了し、「非アクティブ(死)」状態に入ったときに記録しないようです。これは、サービスが失敗した場合、開始または停止したときの移行とは異なります。
Fedora 26 では、systemd[1]: Started OpenBSD Secure Shell server などのメッセージが表示されます。 systemd[1]: OpenBSD Secure Shell サーバーが停止しました。
sshdが終了ステータス0で終了すると、systemdは必ずしも記録しません。これは、sshや他のデーモン(Apacheなど)がSIGTERM:(. SIGKILLがJournalctl -u:systemd [1]:sshに表示される傾向があるアクションです。サービス:プロセスがメインで終了しました。コード=終了、ステータス= 9/KILL。
ただし、RHEL(Fedoraなど)では監査を有効にできます。これは私のために働いた
# journalctl --boot=-1 SYSLOG_IDENTIFIER=audit
...
Dec 30 13:51:38 localhost.localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
...
Dec 30 13:52:08 localhost.localdomain audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
fprintd は、アイドル期間後に完全に終了し、監査メッセージとしてのみ記録されるデーモンの例です。