再起動せずにsystemdを再起動できますか?

再起動せずにsystemdを再起動できますか?

yum updateRHEL 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知る方法はありませんsystemdsystemd execs独自に再起動します。これはプロセスの開始時間をリセットしませんが、実行可能ファイルの変更needs-restarting時間をプロセスの開始時間と比較して、何よりもプロセスを再起動する必要があるかどうかを決定するため、常に再systemd起動が必要と見なされます。再起動が必要かどうかを確認するには、次の点をsystemd確認してくださいlsof -p1 | grep deleted。削除されたバージョンの。削除されたファイルがないと表示されたら、再起動する必要はありません。 (ありがとうございます。systemdlibsystemd-sharedsystemdlsofsystemdジェフ・シャラーヒントのために! )

答え2

私の場合は、アップグレードしたばかりで、systemdすべてのsystemctlコマンドが失敗しました。

# systemctl daemon-reexec
Failed to reload daemon: Access denied
# systemctl status
Failed to read server status: Access denied

ただし、マンページによれば、initPID 1で実行されているデーモンに送信して同じ操作を実行できます。これはうまくいきます。SIGTERM

kill -TERM 1

これによりデーモンが再ロードされ、その後すべてのsystemctlコマンドが再び動作を開始します。

関連情報