¿Es posible detener un comando de apagado?

23

Suponiendo que acaba de ingresar el comando shutdown -h now(o algo equivalente), ¿hay realmente algo que pueda hacer (si es lo suficientemente rápido) para evitar que la máquina se apague?

Jonathan
fuente
Una vez que invocas shutdown -h now, creo que pierdes el acceso a la línea de comandos de manera similar, por halt -plo que no hay mucho que puedas hacer.
Ken
@Ken: en Ubuntu y Centos conectados mediante masilla, la línea de comando permanece disponible durante unos segundos.
¿Por qué decir "ahora" si no quiere decir "ahora"?
Fred Nurk

Respuestas:

22

Puede ejecutar shutdown -cpara cancelar un apagado que ya se está ejecutando.

dogbane
fuente
1
Al principio no lo creía, pero sí. Más específicamentectrl+c
Ken
2
@Ken: shutdown -c y [Ctrl] + [c] son ​​completamente diferentes. shutdown -c es un comando que cancela un apagado programado previamente (incluso "ahora" está programado en este sentido --- pero si la cancelación evitará el reinicio es un poco una carrera en ese caso). [Ctrl] + [c] hará que su terminal genere una SIGINT (señal de interrupción) a cualquier proceso que esté conectado actualmente. Esto podría funcionar en un comando de apagado en ejecución, pero eso es bastante incidental a su pregunta.
Jim Dennis
1
@ Jim Dennis: Soy consciente de la diferencia entre ctrc+cy shutdown -c. Pero dada la velocidad de la -now opción en lugar de su hermano programado, ctrl+csería la ruta más rápida para ese fin. No creía que pudieras detener un cierre inmanente, aún más sorprendido de que puedas interrumpirlo, pero aparentemente puedes, pero es una carrera como dijiste.
Ken
13

Si eres lo suficientemente rápido, puedes emitir un init 2(o el nivel de ejecución que quieras) y eso probablemente detendrá el apagado. Cualquier cosa que implique matar el comando de apagado fallará ya que el comando se ejecuta demasiado rápido

Intenté esto con el siguiente script e incluso no es lo suficientemente rápido como para detener el apagado

#!/bin/bash
shutdown -h now
shutdown -c "Aborting Shutdown"

Broadcast message from iain@iain-ubuntu
        (/dev/pts/0) at 16:50 ...

The system is going down for halt NOW!
shutdown: Cannot find pid of running shutdown

Donde tan interactivamente

shutdown -h now
init 2 

El sistema se mantiene activo.


fuente
1

Desde la página de manual de FreeBSD:

Un apagado programado puede cancelarse cancelando el proceso de apagado (una SIGTERM debería ser suficiente).

Entonces killall shutdownfunciona en BSD cuando hay un apagado programado (por ejemplo shudown -h +5).

No creo que sea factible cancelar un apagado inmediato ( shutdown -h now) en el escenario de la vida real.

Marián Černý
fuente
0

supongamos que envió un mensaje de reinicio o apagado a todos los terminales con fines de mantenimiento de que "el servidor se reiniciará o apagará por motivos de mantenimiento en 10 minutos"

Este tipo de comando puede cancelar.

solo presiona Ctrl+C

Manjur
fuente