Я заметил, что когда я выполняю reboot
команду, мое соединение SSH немедленно закрывается в CentOS 7. Это не означает, что сервер перезагрузился, поскольку я все еще могу пропинговать его.
Кажется, systemd слишком рано убивает sshd. Иногда служба зависает и закрывается или работает медленно, и я больше не могу войти, чтобы проверить, что не так, даже если сервер работает.
Есть ли способ сказать systemd убивать sshd только после того, как все другие службы не работают?
Ответы:
Даже если бы вы могли гарантировать, что SSH - последняя служба, которая будет закрыта, это будет бессмысленно, потому что вы потеряете соединение, как только сетевые службы будут остановлены.
Машина Linux, которая загружается, запускает все службы в заранее определенном порядке: сначала самые важные службы, системный журнал, брандмауэр, затем сеть и, в конечном итоге, приложения, требующие доступа к сети (веб-сервер, сервер SSH и т. Д.). При выключении эти службы останавливаются в обратном порядке. Таким образом, вы потеряете соединение SSH практически сразу.
Тот факт, что SSH уже отключен, а вы все еще можете пропинговать удаленную машину, является нормальным.
источник
Это что-то вроде хака, но как насчет добавления чего-то вроде:
в раздел "[Сервис]"
/usr/lib/systemd/system/sshd.service
? Это не гарантировало бы порядок выключений, но если бы вы могли допустить более длительное время выключения, это могло бы позволить вам поддерживать свою оболочку достаточно долго, чтобы убедиться, что все остальное завершено нормально, или сделать несколько быстрых осмотров. Не уверен, что это полезно в общем случае, поскольку, вероятно, уже слишком поздно прерывать проблемное завершение работы на этом этапе, но это может быть полезно в ситуации, когда у вас возникает повторяющаяся проблема во время завершения работы, которую вы пытаетесь отладить.источник
Я не уверен, что вы здесь, но первое, о чем нужно подумать, это начать процесс заново.
Так что в вашем случае вы можете перезапустить родительский процесс sshd:
источник