¿Cómo garantizar que sshd sea el último servicio que se detendrá durante el apagado?


8

Me di cuenta de que cuando emito un rebootcomando, mi conexión SSH se cierra inmediatamente en CentOS 7. No significa que el servidor se haya reiniciado, ya que todavía puedo hacer ping.

Parece que systemd está matando sshd demasiado pronto. A veces, un servicio se atasca cerrándose o simplemente se ralentiza, y ya no puedo iniciar sesión para verificar qué está mal aunque el servidor esté activo.

¿Hay alguna manera de decirle a systemd que solo mate sshd después de que todos los demás servicios estén inactivos?


8
No es una respuesta a su pregunta, sino un recordatorio inútil: todos los servidores de producción deben tener KVM, tarjeta de acceso remoto o acceso de cable serie. (aunque dependiendo de dónde se estanque el cierre, incluso esos podrían ser inútiles)
Andrew B

44
Esto no será fácil; systemd es agresivamente paralelo con el inicio y el apagado. No solo se está matando ssh de inmediato, sino también muchos otros servicios, probablemente incluido el servicio que está suspendido. Acceda a la consola (remota) y eche un vistazo, o revise los registros en el próximo arranque.
Michael Hampton

¿Quizás las buenas personas en unix.stackexchange.com tendrían mejores consejos para modificar el proceso de apagado del sistema?
austinian

Parece que systemd usa algunos pedidos basados ​​en la configuración de inicio para los pedidos de apagado: serverfault.com/questions/618612/… pero la referencia es vaga y larga, creo que lo están apuntando hacia las dependencias predeterminadas; parece decir que si necesita algo para iniciar, al cerrar un servicio no se cerrará antes de lo que depende.
Mary

Respuestas:


1

Incluso si pudiera asegurarse de que SSH sea el último servicio que se cerrará, no tendría sentido, porque perderá la conexión tan pronto como se detengan los servicios de red.

Una máquina Linux que arranca inicia todos los servicios en un orden predeterminado: primero los servicios más vitales, el syslog, el firewall, luego la red y, finalmente, las aplicaciones que requieren acceso a la red (servidor web, servidor SSH, etc.). Al cerrar, estos servicios se detienen en orden inverso. Entonces perderá la conexión SSH casi de inmediato.

El hecho de que SSH ya esté inactivo mientras aún puede hacer ping en la máquina remota es normal.


0

Este es un truco, pero ¿qué pasa con agregar algo como:

ExecStopPre=sleep 60

a la sección "[Servicio]" de /usr/lib/systemd/system/sshd.service? Eso no garantizaría el orden de los apagados, pero si pudieras tolerar un tiempo de apagado más prolongado, podría permitirte mantener tu shell activo el tiempo suficiente para verificar que todo lo demás terminó bien, o para hacer una búsqueda rápida. No estoy seguro de si esto es útil en el caso general, ya que probablemente sea demasiado tarde para abortar un cierre problemático en esta etapa de todos modos, pero podría ser útil en una situación en la que tiene un problema recurrente durante el cierre que está tratando de depurar.


-5

No estoy seguro de lo que buscas aquí, pero lo primero que pensarás es cambiar el proceso.

Entonces, en su caso, puede cambiar el proceso del padre sshd:

       renice PRIO_MAX -p pid-of-sshd

Eso cambiará su prioridad en la programación de la CPU a casi en tiempo real, pero nada más.
Falcon Momot
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.