¿Hay algún comando / programa a través del cual pueda apagar mi sistema instantáneamente (1 a 5 segundos)?
Actualización (2015): Gracias a quienes han sugerido apagar usando el enchufe. :RE
Actualización (2016): @technophile sugirió que agregue información a la pregunta que describe la naturaleza del problema, principalmente qué escenario estaba tratando de resolver. Aquí está el escenario por el cual se hizo esta pregunta hace algunos años.
Estábamos construyendo un sistema para ser desplegado en espacios públicos como (aeropuertos, hoteles, etc.). Las personas pueden usar ese sistema para navegar por Internet, revisar su correo electrónico o incluso hacer reservas, etc., usando sus tarjetas de crédito. El sistema creado se aseguró de que un segundo usuario no pueda obtener información (correo electrónico, tarjetas de crédito) del usuario anterior de ese sistema, incluso si los softwares de keyloggers se instalan de alguna manera. ¿Cómo se aseguró el sistema? Bueno, los detalles no se pueden compartir porque esa no es información pública. pero desarrollamos una forma de tener siempre un Sistema Operativo nuevo (como si estuviera recién instalado) para un nuevo usuario del sistema. El único problema fue que tuvimos que apagar la máquina y volver a abrirla tan pronto como el primer usuario abandona la máquina.
Y quería que ese apagado fuera instantáneamente rápido (esa es la pregunta) y que el próximo arranque también sea muy rápido para lo que investigué e intenté un gran número de distribuciones de Linux desde Damn Small Linux a Slackware a Debian, etc. historia separada
fuente
Respuestas:
fuente
No sugiero hacer lo siguiente si no se ve obligado por razones realmente especiales:
Es duro, brutal y puede considerarse un equivalente cercano a desconectar el cable de alimentación ...
La forma correcta es
shutdown -h now
consudo
antes cuando sea necesario.Tal vez debería decir la manera legal ; ver abajo o mejor tl; dr.
Algunas palabras más , también conocido como La historia, Capítulo I
Al principio fue el init y será hasta el final.
Todo Linux depende del cuidado amoroso de init [ 1 ] [ 2 ] . Sin embargo, y no sin una cierta cantidad de ingratitud, hubo un tiempo en el que el buen Dios usuario root puede traicionar este amor y de repente
kill
init con un incontestable (-9
orden).( El Libro de Etiqueta prescribe los recuentos, duques y usuarios de marquesas para invocar antes de a
sudo
).Luego, algunos magos hicieron un hechizo para proteger a init (del Libro de
man 2 init
)(Nuestros espías informan [ U1 ] que init se encargará de 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32)
Entonces el buen usuario root de Lord aprenderá las noticias y cambiará el comando
kill -ABRT 1
okill -SEGV 1
eso generalmente genera un kernel panic y un volcado de núcleos.Funciona porque init es el primer proceso que se ejecuta y toma el número PID 1 [ 2b ] .
Esto es inseguro, imprudente y sientes que es el heraldo de un mal augurio y una maldición, pero si no puedes materializar las manos y desconectarlo ...
La maldición : no escribirá en el registro, no matará todos los procesos y esperará su finalización, no escribirá en el HDD actualizando correctamente los inodes ni desmontará los sistemas de archivos; ni siquiera se preocupe, guardará las opciones de las ventanas gráficas y los historiales de shell, y muchos otros más allá de nuestra imaginación ... como dijimos un equivalente cercano a desconectar el cable de alimentación o la batería de una computadora portátil.
La forma correcta
"Non nobis, Domine, non nobis, sed nomini tuo da gloriam", lema de los caballeros templarios.
La forma legal (correcta) es usar
shutdown
[ 3 ]pero con
-h now
ellos no tendrán tiempo suficiente para hacer tanto ...Algunas palabras más , también conocido como La historia, Capítulo II
Érase una vez algunos pasos lógicos que se sintieron desde el cielo sobre la gente de Unix:
De hecho, hoy en día, no confiamos más en la existencia de las tres Moiras [ 5 ] del mundo de Linux ,
reboot
,poweroff
yhalt
[ 6 ] : la ciencia moderna dels -l $(which poweroff halt reboot)
y el deman reboot
los diferenciales nueva luz sobre esta era oscura y nos revelan que existe un solo comando verdadero que analiza todas sus opciones para que finalmente podamos pedir acciones que contradigan los nombres de sus comandos. (halt -p
oreboot -p
parapoweroff
,shutdown -r
parareboot
...)Ahora que todo parecía ser claro y acogedor para todos, los rumores afirman [ 7 ] que en el inframundo del conjunto de herramientas systemd [ 8 ] se llevó a cabo una revolución que desconoce todo el mundo . Gracias a un ejército de cuñas de compatibilidad con versiones anteriores , no notamos en absoluto que reiniciar, apagar, detener [ 6 ] e incluso telinit [ 9 ] y apagar [ 3 ] ya están vinculados al nuevo rey systemctl [ 10 ]. Escucha toda la historia de la voz original de JdeBP The Bard [ 9 ] porque no tengo más aliento.
Si eres un seguidor del culto de Ubuntu, aún puedes estar consciente por un tiempo de todas esas afirmaciones [ 11 ] .
El medio de la Tierra
halt -f
,init
,telinit
,systemctl
Búsqueda para la solución más rápida que la correcta, pero del mismo modo inteligente.
Si está bajo systemd o no, debería poder detener la computadora sin invocar todos los procedimientos correctos de shudown (y más rápido):
halt -f
: especificando la opción-f
(tenga en cuenta que debe-f
evitar el procedimiento de apagado) con el comando anterior, consudo poweroff -f
o tal vez incluso consudo reboot -f -h
. De hecho, podemos leerman reboot
(y equivalentes) sobre la necesidad de especificar la opción-f
para evitar llamar al cierre:Además, puede usar
telinit
[ 2b ] (oinit
directamente)decirle a init que cambie el nivel de ejecución ... pero si es así, ¿por qué no matarlo directamente?
En systemd puede usar la opción doble imprudente
--force --force
Lectura del manual systemctl [ 10 ]
Ps> Inspírate sobre las variantes de la cola JdeBP The Bard [ 7 ] .
fuente
Puede apagar la máquina inmediatamente sin sincronizar discos escribiendo "o" en / proc / sysrq-trigger como root.
Como un script de shell se vería algo así
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 ningún sistema de archivos que desee leer más tarde.
Utilizo esto en Google Compute Engine para eliminar instancias con plantilla justo antes de la marca de diez minutos para maximizar la rentabilidad de los trabajos en clúster, funciona muy bien.
fuente
b
en lugar deo
reiniciar (relevante desde que se actualizó la pregunta).Tienes que usar la combinación de teclas Magic SysRq
REISUB
.Repita después de mí: " Criar elefantes es tan aburrido ... "
fuente
Esto debería funcionar en las distribuciones más comunes. A diferencia de
shutdown
, en muchos sistemas puede ejecutar esto como un usuario normal (no se necesita sudo).Editar: Lectura adicional:
shutdown
ypoweroff
en Ubuntuhalt
,shutdown
ypoweroff
en los sistemas Unixfuente
Tomado de otro sitio SE:
Alt+ SysRq+ Bes reinicio instantáneo, y Alt+ SysRq+ Oes apagado instantáneo.
Referencia: aquí
fuente
Mantenga presionada la tecla de encendido durante unos 4 segundos, es bastante rápido.
fuente
En ciertas distribuciones de Linux, el apagado ofrece la opción -n. (Ver hombre apagado ). Sin embargo, ciertas distribuciones (como ubuntu que utiliza el sistema de arranque en lugar de sysvinit) no admiten su indicador, y este indicador (como se puede aprender de la página de manual) no está exento de riesgos. Aunque he estado usando esto durante años (en mi computadora portátil no me importa que todos los demonios se terminen correctamente, solo quiere que todo se elimine y mi memoria caché se enjuague) (es más rápido que un apagado normal y más seguro que tirar del enchufe (y amigos)). Podrías ver si esto resuelve tu problema.
fuente
Usé este pequeño script para apagar el sistema. En realidad, se usa esto para una broma en una máquina de "creación de prototipos": "¡Hola amigo, veamos qué hace ese increíble .sh!"
(Este script imita lo mismo que presionar Alt+ SysRq+ u/ s/ ocomo se explicó anteriormente). Por supuesto, no causo una terminación anormal del sistema (las tablas mysql, etc. pueden fallar), así que úselas solo en máquinas ficticias. Nota: La sincronización puede llevar algo de tiempo. He visto que si el sistema tiene mucha memoria libre (para caché) y copia muchos archivos en un pen drive, la sincronización lleva más tiempo, pero lo recomiendo incluso para una broma.
Editar: es mejor usarlo en
sync
lugar de escribir 's' ensysrq-trigger
: escribir 's' no bloqueará la ejecución del script, por lo que después de solicitar que la memoria caché se escriba en el disco, la máquina se apagará inmediatamente. En contraste con elsync
comando,sync
regresará después de que se complete el proceso de escritura. Por lo tanto, la ejecución del script se bloqueará hasta que se complete el vaciado de la memoria caché.fuente
SEQUENCE=(s u o); for i in "${SEQUENCE[@]}"; do sleep 3; printf "${i}" > /proc/sysrq-trigger; done