シャットダウン中にsshdが最後に停止するサービスであることを確認するにはどうすればよいですか?


8

rebootコマンドを発行すると、CentOS 7でSSH接続がすぐに閉じられることに気付きました。pingを実行できるため、サーバーが再起動したわけではありません。

systemdがsshdを強制終了するのが早すぎるようです。場合によっては、サービスがシャットダウンしたり、単に遅くなったりすることがあり、サーバーが起動していても、ログインして問題を確認することができなくなります。

他のすべてのサービスが停止した後にのみsystemdにsshdを強制終了するように指示する方法はありますか?


8
質問への回答ではありませんが、役に立たないことに注意してください。すべての運用サーバーには、KVM、リモートアクセスカード、またはシリアルケーブルアクセスが必要です。(シャットダウンがどこで停止しているかによっては、それらが役に立たない場合もあります)
Andrew B

4
これは簡単ではありません。systemdは、起動およびシャットダウンと積極的に並行しています。sshがすぐに強制終了されるだけでなく、他の多くのサービスもハングしている可能性があります。(リモート)コンソールにアクセスして確認するか、次回の起動時にログを確認してください。
マイケルハンプトン

unix.stackexchange.comの優れた人は、systemdのシャットダウンプロセスを変更するためのより良いアドバイスがあるでしょうか?
オースティンの2015

systemdは、シャットダウン構成の起動構成に基づいていくつかの順序を使用しているようです: serverfault.com/questions/618612/…参照は曖昧で長いため、DefaultDependenciesに向かっていると思います-必要な場合は、起動する何か、シャットダウン時に依存するものの前にサービスはシャットダウンされません。
メアリー

回答:


1

SSHがシャットダウンされる最後のサービスであることを確認できたとしても、ネットワークサービスが停止するとすぐに接続が失われるため、SSHは無意味です。

起動するLinuxマシンは、すべてのサービスを事前に決められた順序で開始します。最初に最も重要なサービス、syslog、ファイアウォール、次にネットワーク、最後にネットワークアクセスを必要とするアプリケーション(サーバーWeb、サーバーSSHなど)です。シャットダウンすると、これらのサービスは逆の順序で停止されます。そのため、ほとんどすぐにSSH接続が失われます。

リモートマシンにまだpingを実行できる一方で、SSHがすでにダウンしているという事実は正常です。


0

これは少しハックですが、次のようなものを追加することについてはどうでしょう:

ExecStopPre=sleep 60

の「[サービス]」セクションに/usr/lib/systemd/system/sshd.service?これはシャットダウンの順序を保証するものではありませんが、長いシャットダウン時間を許容できる場合は、シェルをアクティブな状態に維持して、他のすべてが正常に終了したことを確認したり、すばやく突っ込んだりすることができます。とにかくこの段階で問題のあるシャットダウンを中止するには遅すぎるため、これが一般的なケースで役立つかどうかはわかりませんが、シャットダウン中にデバッグしようとしている問題が繰り返し発生する状況では役立つ可能性があります。


-5

ここであなたが何をしているのかはわかりませんが、最初に考えるのはプロセスを再開することです。

したがって、あなたの場合、sshd親プロセスを再利用できます。

       renice PRIO_MAX -p pid-of-sshd

これにより、CPUスケジューリングの優先順位がほぼリアルタイムに変わりますが、それ以外は何も変わりません。
Falcon Momot
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.