Cómo hibernar o suspender Linux desde la línea de comandos: CloudSavvy IT

Shutterstock / Moriz

¡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.

Índice de contenidos
  1. Hibernación es Dormir en Linux
  2. ¿Los escritorios no pueden hibernar o suspender?
  3. Cómo hibernar, dormir o congelar
  4. Terminando

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:

No se ofrece suspensión, hibernación ni espera

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:

congelar las opciones de memoria y disco disponibles en / sys / power / state

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/stateo 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Nelida Haydee Saldivia.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a KnownHost que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Subir