reboot
コマンドを発行すると、CentOS 7でSSH接続がすぐに閉じられることに気付きました。pingを実行できるため、サーバーが再起動したわけではありません。
systemdがsshdを強制終了するのが早すぎるようです。場合によっては、サービスがシャットダウンしたり、単に遅くなったりすることがあり、サーバーが起動していても、ログインして問題を確認することができなくなります。
他のすべてのサービスが停止した後にのみsystemdにsshdを強制終了するように指示する方法はありますか?
reboot
コマンドを発行すると、CentOS 7でSSH接続がすぐに閉じられることに気付きました。pingを実行できるため、サーバーが再起動したわけではありません。
systemdがsshdを強制終了するのが早すぎるようです。場合によっては、サービスがシャットダウンしたり、単に遅くなったりすることがあり、サーバーが起動していても、ログインして問題を確認することができなくなります。
他のすべてのサービスが停止した後にのみsystemdにsshdを強制終了するように指示する方法はありますか?
回答:
SSHがシャットダウンされる最後のサービスであることを確認できたとしても、ネットワークサービスが停止するとすぐに接続が失われるため、SSHは無意味です。
起動するLinuxマシンは、すべてのサービスを事前に決められた順序で開始します。最初に最も重要なサービス、syslog、ファイアウォール、次にネットワーク、最後にネットワークアクセスを必要とするアプリケーション(サーバーWeb、サーバーSSHなど)です。シャットダウンすると、これらのサービスは逆の順序で停止されます。そのため、ほとんどすぐにSSH接続が失われます。
リモートマシンにまだpingを実行できる一方で、SSHがすでにダウンしているという事実は正常です。
これは少しハックですが、次のようなものを追加することについてはどうでしょう:
ExecStopPre=sleep 60
の「[サービス]」セクションに/usr/lib/systemd/system/sshd.service
?これはシャットダウンの順序を保証するものではありませんが、長いシャットダウン時間を許容できる場合は、シェルをアクティブな状態に維持して、他のすべてが正常に終了したことを確認したり、すばやく突っ込んだりすることができます。とにかくこの段階で問題のあるシャットダウンを中止するには遅すぎるため、これが一般的なケースで役立つかどうかはわかりませんが、シャットダウン中にデバッグしようとしている問題が繰り返し発生する状況では役立つ可能性があります。
ここであなたが何をしているのかはわかりませんが、最初に考えるのはプロセスを再開することです。
したがって、あなたの場合、sshd親プロセスを再利用できます。
renice PRIO_MAX -p pid-of-sshd