yum update
RHEL 7.4でサービスを再起動しようとしています。 systemctlを使用して各サービスを再起動できますが、systemd自体も再起動する必要があることを示すメッセージがneeds-restarting
表示されます。yum utils
# needs-restarting
1 : /usr/lib/systemd/systemd --system --deserialize 21
systemd
サーバーを再起動せずに再起動できますか?どのように?
私はいくつかの言及を見つけましsystemctl daemon-reload
たが、再起動する必要性のリストから外れませんでした。
答え1
デーモンを再起動するには、次を実行します。
systemctl daemon-reexec
この内容は次のように記録されます。systemctl
マンページ:
システム管理者を再実行してください。これにより、管理者の状態がシリアライズされ、プロセスが再び実行され、状態が再びデシリアライズされます。このコマンドは、デバッグおよびパッケージのアップグレードを除いてほとんど使用されません。時にはヘビー級選手になることが役に立ちます
daemon-reload
。デーモンが再実行されると、ユーザーに代わって受信するように構成されているすべてのシステムソケットに引き続きアクセスできます。
残念ながら、実際に再起動するかどうかをneeds-restarting
知る方法はありませんsystemd
。systemd
execs
独自に再起動します。これはプロセスの開始時間をリセットしませんが、実行可能ファイルの変更needs-restarting
時間をプロセスの開始時間と比較して、何よりもプロセスを再起動する必要があるかどうかを決定するため、常に再systemd
起動が必要と見なされます。再起動が必要かどうかを確認するには、次の点をsystemd
確認してくださいlsof -p1 | grep deleted
。削除されたバージョンの。削除されたファイルがないと表示されたら、再起動する必要はありません。 (ありがとうございます。systemd
libsystemd-shared
systemd
lsof
systemd
ジェフ・シャラーヒントのために! )
答え2
私の場合は、アップグレードしたばかりで、systemd
すべてのsystemctl
コマンドが失敗しました。
# systemctl daemon-reexec
Failed to reload daemon: Access denied
# systemctl status
Failed to read server status: Access denied
ただし、マンページによれば、init
PID 1で実行されているデーモンに送信して同じ操作を実行できます。これはうまくいきます。SIGTERM
kill -TERM 1
これによりデーモンが再ロードされ、その後すべてのsystemctl
コマンドが再び動作を開始します。