
¡Hibernar y dormir es para osos y ordenadores! Si su objetivo es consumir menos electricidad, esta guía le mostrará cómo crear un pequeño script para hibernar, suspender o congelar su computadora de manera segura desde la línea de comandos.
Hibernación es Dormir en Linux
Hibernar una computadora guardará el contenido actual de la memoria de la computadora (el RAM memoria de la computadora) al disco, especialmente en el espacio de intercambio. Después de eso, la energía se cortará automáticamente por una llamada al hardware y cuando reinicie su computadora, el contenido de la memoria se leerá desde el espacio de intercambio en la memoria principal y podrá continuar usando la computadora exactamente donde lo hibernaste.
Existe un desafío cuando se trata de hibernar una instancia de Linux usando la línea de comando: necesitará suficiente espacio de intercambio para encapsular todo el tamaño de la RAM y potencialmente algunos extras para el uso de intercambio simultáneo normal por parte de las aplicaciones. Por lo tanto, si tiene 8 GB de RAM en su sistema, es posible que desee asignar de 16 a 20 GB de espacio de intercambio para asegurarse de que haya suficiente. Si desea aprender cómo hacer esto, consulte nuestra guía Cómo crear y habilitar un archivo de intercambio en la Ayuda de la línea de comandos de Linux.
Un estado de suspensión es muy similar, aunque la alimentación no se eliminará por completo. Su memoria, y a veces su CPU, permanecerá energizada de modo que cuando regrese a la máquina y, por ejemplo, presione la barra espaciadora o haga clic en un botón del mouse (como eventos de activación), la computadora comenzará a funcionar nuevamente donde lo puso dormir. Estos eventos de activación normalmente se pueden configurar desde el BIOS.
Por lo general, puede ingresar al BIOS de su computadora mientras se está iniciando, siempre que no haya sido hibernado o puesto en suspensión, sino que en realidad se haya apagado por completo la última vez que lo usó. A menudo se puede acceder presionando una tecla como F2 o DEL (o cualquier otra tecla que se muestre en la pantalla o que esté disponible en el manual del fabricante de la placa base) durante el inicio temprano del sistema (tan pronto como aparezca el texto en la pantalla después de presionar el botón de encendido) .
Por lo general, hay tres niveles de suspensión de ahorro de energía basados en el kernel disponibles en Linux, proporcionados por el sistema operativo (o más específicamente por el kernel).
Estos niveles están integrados en el kernel y su disponibilidad depende del sistema operativo utilizado. Los niveles son Suspender a inactivo (bien llamado s2idle o congelar), Suspensión a memoria (mem o más correctamente profundo) y Suspend-To-Disk (disco). Su sistema también puede admitir el modo de espera (standby
o shallow
). ¡Pronto aprenderemos más sobre cómo averiguar qué niveles están disponibles en su sistema y cómo controlarlos!
¿Los escritorios no pueden hibernar o suspender?
Curiosamente, mientras que la suspensión en memoria y la suspensión en disco suelen estar disponibles mediante el kernel y son compatibles con el sistema, el sistema operativo que se ejecuta en el kernel, con cierta regularidad, no presentará estas opciones en su GUI / escritorio. .
Por ejemplo, en una instalación reciente de Mint 20 (un sistema operativo moderno basado en Ubuntu), clonado en un sistema moderno, las siguientes opciones estaban disponibles al presionar el botón de encendido en la GUI / Escritorio de xcfe:
Cerrar sesión, reiniciar, cerrar y cambiar de usuario, pero no Dormir, Apoyar ninguno de los dos Hibernación! Sin embargo, poder suspender este sistema en memoria o en disco sería, por tanto, un gran paso adelante, aunque para ello tengamos que llamar al terminal. La siguiente sección explicará cómo hacer esto, pero primero echemos un vistazo a las opciones disponibles en su sistema y lo que significan.
Si tu corres cat /sys/power/state
en la línea de comando, verá algo como lo siguiente:
En este sistema en particular, las tres opciones principales (freeze, mem and disk
) son compatibles. También puede ver standby
o su sistema.
los freeze
si se establece, iniciará un estado de suspensión de software ligero para el sistema. El espacio de usuario de Linux se congelará (de ahí el término) y todos los dispositivos de E / S se pondrán en un estado de bajo consumo. Si bien esta opción y estado siempre son compatibles y limitan el uso de energía, es la forma más ligera de detener la máquina. Si no hay otras opciones disponibles, esto aún podría ahorrar en las facturas de electricidad, aunque no tanto como apagar el sistema.
La pregunta para esta opción / estado se convierte en una cuestión de conciencia (deje el sistema en un estado listo para usar y como descontinuado y guarde algo en lugar de cerrarlo, pero tener que volver a abrir aplicaciones y guardar más). Con suerte, el sistema operativo y el hardware también son compatibles con otros estados. Si no es así, considere actualizar o modificar el sistema operativo y / o actualizar el firmware del BIOS y otros dispositivos de hardware a las últimas versiones. Cambiar las opciones de energía en el BIOS también puede ayudar.
los mem
la opción, cuando se establece, iniciará una suspensión de inactividad, que es idéntica a congelar opción, o suspender RAM, donde todo en el sistema se coloca en un estado de bajo consumo de energía excepto la memoria. La opción utilizada (Suspend-To-Idle o Suspend-To-RAM) depende de la configuración del archivo /sys/power/mem_sleep
expediente. Puede examinar los distintos modos de este archivo simplemente ejecutando cat /sys/power/mem_sleep
en la línea de comandos de la terminal.
En general, espero que esta opción esté configurada de forma predeterminada en deep
por defecto (como lo indica [code]
) en todos los sistemas operativos Linux, simplemente porque al configurar la extensión /sys/power/state
opción para mem
, uno esperaría que el sistema escribiera el contenido en la memoria (es decir, Suspend-To-RAM, que se configura usando deep
en /sys/power/mem_sleep
) en lugar del modo Suspend-To-Idle como lo indica s2idle
.
También tenga en cuenta que puede usar dos formas diferentes para suspender a inactivo: o escribiendo freeze
por /sys/power/state
o escribiendo s2idle
por /sys/power/mem_sleep
y posteriormente escribiendo mem
por /sys/power/state
.
Como puede ver, la terminología utilizada es un poco confusa y confusa debido a la presencia del /sys/power/mem_sleep
expediente. Una forma más fácil de hacer las cosas, y presumiblemente la forma predeterminada en todos los sistemas operativos Linux modernos, sería simplemente alejarse. /sys/power/mem_sleep
ajustado a deep
y escribe freeze
por /sys/power/state
Suspender a inactivo y escribir mem
por /sys/power/state
a Suspender a RAM.
Finalmente, tenemos la última opción (siempre que su sistema no tenga la standby
opción, que es una opción de Power-On-Suspend donde la CPU mantiene la energía) a saber disk
. Esta opción nos permite suspender en disco. Básicamente, es la opción Hibernar que describimos anteriormente, mientras que Suspend-To-Idle o Suspend-To-RAM pueden considerarse modo de suspensión. En este modo, todos los datos de la memoria se escriben en el disco, de modo que incluso la propia memoria puede liberarse: un apagado completo.
En resumen, la forma más fácil de seleccionar una de las tres opciones principales de apagado es tener (o dejar) /sys/power/mem_sleep
ajustado a deep
, ignore este archivo, luego seleccione nuestros modos de suspensión usando /sys/power/state
solo y escribiendo freeze
(Suspender a inactivo), mem
(Suspender a RAM), o disk
(Suspend-To-Disk) en este archivo. Veamos cómo hacerlo, de forma segura.
Cómo hibernar, dormir o congelar
Queremos tener un script que hiberne, suspenda o bloquee nuestra computadora de manera segura. ¿Por qué la mención de la seguridad? Bueno, piensa en cómo escribir freeze
por /sys/power/state
inmediatamente bloqueará el sistema y lo restaurará al mismo estado exacto cuando se presiona una tecla o se hace clic en un mouse (dependiendo de si esas opciones están habilitadas a través de la configuración del BIOS). ¡Su escritorio desbloqueado todavía está desbloqueado!
Por lo tanto, necesitamos un script que no solo hiberne, suspenda o congele nuestra máquina, sino también uno que congele nuestro escritorio por nosotros. La implementación de esto dependerá del sistema operativo y el escritorio / GUI elegidos.
Una búsqueda rápida en su motor de búsqueda favorito para [screen] bloquear la GUI de distribución de Linux desde la línea de comandos Dónde está pantalla es una palabra / término de búsqueda opcional, Distribución de Linux es el nombre de su distribución de Linux y GUI es el nombre de su GUI (como xcfe por ejemplo), revelará una o más formas de bloquear su terminal desde la línea de comando. Para esta guía, usaremos Linux Mint 20 con xcfe.
Nosotros definimos el nuestro hibernate.sh
guión de la siguiente manera:
sudo sleep 0.1 # To get auth xflock4 sleep 3 echo disk | sudo tee /sys/power/state # Requires sufficient swap space
En la primera línea invocamos sudo
para habilitar la autenticación a nivel de root / superusuario. Simplemente facturamos sleep 0.1
como un comando ficticio. El único propósito aquí es que los comandos sudo posteriores (como el último) no requieren que ingrese la autenticación, ya que es un poco difícil ingresar una contraseña en un terminal cuando la pantalla ya está bloqueada 😉
Luego invocamos el sistema operativo y la elección del comando de bloque específico para escritorio / GUI / administrador de ventanas, siendo xflock4
para xcfe en Linux Mint 20. A continuación, dormimos durante 3 segundos usando sleep 3
.
Finalmente, escribimos (usando echo
) la palabra disk
por /sys/power/state
usando tee
(para ver man tee
para obtener más información si esto es de interés, básicamente tee lee de la entrada estándar y escribe en un archivo aquí) e sudo
. Esto hibernará nuestro sistema en el disco (y apagará la computadora) previsto tenemos suficiente espacio de intercambio como se describe anteriormente en esta guía.
Cambiar este script a Suspend-To-RAM / Memory ahora es fácil, simplemente cambie la palabra disk
por mem
.
Nosotros definimos el nuestro sleep.sh
guión de la siguiente manera:
sudo sleep 0.1 # To get auth xflock4 sleep 3 echo deep | sudo tee /sys/power/mem_sleep echo mem | sudo tee /sys/power/state
Hemos dado el paso adicional de escribir. deep
por /sys/power/mem_sleep
para estar energéticamente seguro y evitar Idle-To-Suspend. Solo funcionará si deep
es una opción eficaz en su sistema (recuerde ejecutar cat /sys/power/mem_sleep
para conocer los modos de suspensión de la memoria y asegurarse deep
es uno de ellos). Uno mismo deep
ya está seleccionado como el valor predeterminado actual, se mostrará como [deep]
.
Finalmente, también podemos crear un freeze
guión de la siguiente manera:
sudo sleep 0.1 # To get auth xflock4 sleep 3 echo freeze | sudo tee /sys/power/state
Tenga en cuenta que no hay escritura adicional de s2idle
por /sys/power/mem_sleep
es necesario, ya que freeze
escribir a /sys/power/state
usar automáticamente s2idle
(Suspend-To-Idle). Como se describió anteriormente, podríamos haber escrito s2idle
por /sys/power/mem_sleep
y luego escrito mem
por /sys/power/state
en lugar de obtener el mismo resultado, pero esta parece ser una forma más confusa de hacerlo.
Los diversos estados de energía enumerados en los guiones anteriores, en el orden presentado (disk
> mem
> freeze
) tienen más o menos ahorro de energía y niveles más altos pondrán la computadora en un estado de suspensión más profundo.
También cabe destacar que solo Suspend-To-Disk (disk
) proporciona una garantía de que si la energía del sistema falla de alguna manera, su estado guardado no se verá afectado y la computadora puede continuar donde lo dejó. Dicho esto, también es el más lento ya que se requiere E / S de disco, debido al tamaño de la memoria.
Terminando
Poder dormir o hibernar una máquina de forma local o remota a través de la línea de comandos ofrece una gran flexibilidad, en varios niveles de ahorro de energía a través de varios modos de suspensión. Tanto los servidores como los equipos de escritorio se pueden hibernar.
Puede suspender una computadora inactiva (s2idle), a la memoria (mem) y en disco (disco). Esta guía describe las diversas formas de hacer esto, así como cómo esto se relaciona con el hardware subyacente. Los sistemas operativos con regularidad, aunque admiten la hibernación y la suspensión, no siempre anuncian o exponen estas opciones en la GUI de su escritorio.
Saber cómo llevarlo un paso más allá de la línea de comandos a menudo nos evita no poder hibernar o dormir una máquina en absoluto, o poder hibernar o dormir esa máquina de forma remota. ¡Disfrutar!
Descargo de responsabilidad: ninguna computadora resultó dañada en los diversos experimentos realizados para esta guía 🙂
Descubre más contenido