GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo apagar una computadora instantáneamente (de 1 a 5 segundos) sin usar un interruptor/enchufe físico?

sudo shutdown -h now

No sugiero hacer lo siguiente si no está obligado por razones realmente especiales:

kill -SEGV 1   # should generate a core dumps and kernel panic
kill -ABRT 1   # should generate a core dumps and kernel panic
kill -9 1      # On old systems worked nowadays not

Es rudo, brutal y puede considerarse un equivalente cercano a desenchufar el cable de alimentación. ...

La manera correcta es shutdown -h now con sudo antes cuando sea necesario.
Tal vez debería decir la forma legal; ver abajo o mejor tl;dr.

Algunas palabras más , también conocido como La historia, Capítulo I
En el principio fue el inicio y lo será hasta el final.

Todo Linux depende del cuidado amoroso de inicio . No obstante y no sin cierta dosis de ingratitud, hubo un momento en el que el buen señor usuario root puede traicionar este amor y de repente kill init con un incontrovertible (-9 ) ordenar.
(El Libro de Etiqueta prescribe para los usuarios de condes, duques y marqueses invocar ante un sudo ).

Luego, algunos magos hicieron un amuleto para proteger a init (del Libro de man 2 init )

Las únicas señales que se pueden enviar al proceso ID 1, el proceso init, son aquellas para las que init ha instalado explícitamente controladores de señal. Esto se hace para asegurar que el sistema no se apague accidentalmente.

que init manejará 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32)
Así que el buen Señor usuario root aprende las noticias y cambia el comando en kill -ABRT 1 o kill -SEGV 1 que suelen generar un kernel panic y un core dump.

Funciona porque init es el primer proceso que se ejecuta y toma el PID número 1 .

Esto es inseguro, imprudente y sientes que es un heraldo de mal augurio y una maldición, pero si no puedes ponerle las manos encima y desenchufarlo...

La maldición :no escribirá en el registro, no matará todos los procesos y esperará a que finalicen, no escribirá en el disco duro actualizando correctamente los inodos ni desmontará los sistemas de archivos; ni siquiera importa, guardará las opciones de las ventanas gráficas y las historias de shell, y muchas otras más allá de nuestra imaginación ... como dijimos, un equivalente cercano a desconectar el cable de alimentación o la batería si es una computadora portátil.

La forma correcta

Los legales La forma (correcta) es usar shutdown

sudo shutdown -h now

shutdown hace arreglos para que el sistema se apague de una manera segura. Se notifica a todos los usuarios registrados que el sistema se está cayendo y...

pero con -h now no tendrán tiempo suficiente para hacer tanto...

Algunas palabras más , alias La historia, Capítulo II
Había una vez unos pasos lógicos que caían del cielo sobre la gente de Unix:

Una vez que se han eliminado los procesos del sistema y se han desmontado los sistemas de archivos, el sistema se detiene, se apaga o se reinicia automáticamente. Esto se hace usando el comando detener o reiniciar, que sincroniza los cambios en los discos y luego realiza la detención/apagado o reinicio real.

De hecho, hoy en día, ya no confiamos en la existencia de las tres Moirai del mundo Linux , reboot ,poweroff y halt :la ciencia moderna de ls -l $(which poweroff halt reboot) y el de man reboot , difunde nueva luz sobre esta era oscura y nos revela que solo existe un comando verdadero que analiza todas sus opciones para que finalmente seamos libres de pedir acciones que contradigan los nombres de sus comandos. (halt -p o reboot -p para poweroff , shutdown -r para reboot ...)

Ahora que todo parecía estar claro y cómodo para todos, los rumores afirman que en el inframundo del conjunto de herramientas systemd se realizó una revolución dejando inconsciente a todo el supermundo . Gracias a un ejército de correcciones de compatibilidad con versiones anteriores no notamos en absoluto que reiniciar, apagar, detener e incluso telinit y apagar ya están limitados al nuevo rey systemctl. Escuche la historia completa de la voz original de JdeBP The Bard porque ya no tengo aliento.

Si eres un seguidor del culto a Ubuntu, es posible que aún estés al tanto de todas esas afirmaciones por un tiempo.

La Tierra Media de halt -f , init , telinit , systemctl
Buscar una solución más rápida que la correcta pero igualmente sabia.

systemctl --force --force poweroff  # the most close to kill -9 1 
systemctl --force poweroff          # rough but still safe
sudo halt -f                                       # rough
sudo telinit 0        # or 6                       # safe
kill -SIGINT 1        # cause reboot   as the reboot command
kill -SIGRTMIN+4 1    # cause shutdown as the halt command

Ya sea que esté bajo systemd o no, debería poder detener la computadora sin invocar todos los procedimientos de apagado correctos (y por lo tanto más rápido):

  1. halt -f :especificando la opción -f (tenga en cuenta que necesita -f para evitar el procedimiento de apagado) con el comando anterior, con sudo poweroff -f o tal vez incluso con sudo reboot -f -h .De hecho, podemos leer desde man reboot (y equivalentes) sobre la necesidad de especificar la opción -f para evitar llamar al apagado:

    Cuando se llama con --force o cuando está en el nivel de ejecución 0 o 6, esta herramienta invoca la llamada del sistema reboot(2) (con el argumento REBOOTCOMMAND aprobado) y reinicia el sistema directamente .

    De lo contrario, esto simplemente invoca la herramienta de apagado (8) con los argumentos apropiados sin pasar el argumento REBOOTCOMMAND.

    -f, --fuerza
    No invoca el apagado (8) y, en cambio, realiza la acción real que esperaría del nombre .

  2. Además puedes usar telinit (o init directamente)

    sudo telinit 0    # or 6
    

    para decirle a init que cambie el nivel de ejecución... pero si es así, ¿por qué no matarlo directamente?

  3. En systemd puede usar la opción doble imprudente --force --force

    systemctl --force --force poweroff  
    

    Lectura del manual systemctl

    -f, --fuerza
    Cuando se usa con enable, sobrescribe cualquier enlace simbólico conflictivo existente.
    Cuando se usa con halt , poweroff , reboot o kexec, ejecuta la operación seleccionada sin apagar todas las unidades. Sin embargo, todos los procesos se cancelarán a la fuerza y ​​todos los sistemas de archivos se desmontarán o se volverán a montar como de solo lectura. Por lo tanto, esta es una opción drástica pero relativamente segura para solicitar un reinicio inmediato. Si se especifica --force dos veces para estas operaciones, se ejecutarán inmediatamente sin finalizar ningún proceso ni desmontar ningún sistema de archivos. Advertencia:especificar --force dos veces con cualquiera de estas operaciones podría provocar la pérdida de datos.

Ps> Inspírate en las variantes de la cola JdeBP The Bard.


Puede apagar la máquina inmediatamente sin sincronizar los discos escribiendo "o" en /proc/sysrq-trigger como root.

Como script de shell, se vería algo así como

#!/bin/sh
echo o >/proc/sysrq-trigger

Si tiene permisos en /proc/sysrq-trigger, no tiene que habilitarlo a través de sysctl. Esa opción solo afecta la activación por teclado.

No recomiendo hacer esto en una máquina con cualquier sistema de archivos que desee leer más tarde.

Utilizo esto en Google Compute Engine para sacrificar instancias con plantillas justo antes de la marca de diez minutos para maximizar la rentabilidad de los trabajos del clúster, funciona muy bien.


Linux
  1. Cómo deshabilitar los comandos de apagado y reinicio en Linux

  2. ¿Cómo recargar las reglas de Udev sin reiniciar?

  3. Cómo apagar o reiniciar Linux

  4. ¿Cómo esperar a que se reinicie el servidor usando Ansible?

  5. ¿Cómo eliminar un archivo sin usar rm?

Cómo evitar el apagado o reinicio accidental en Linux

Cómo cambiar automáticamente a un directorio sin usar el comando Cd en Linux

Cómo cambiar entre TTY sin usar teclas de función en Linux

Cómo descargar paquetes usando APT sin instalarlos

Cómo apagar o reiniciar Linux usando la línea de comandos

Cómo apagar o reiniciar Debian 11