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

Contenidos

¡Hibernar y dormir es tanto para osos como para PC´s! Si su objetivo es consumir menos electricidad, esta guía le mostrará cómo hacer un pequeño script para hibernar, suspender o congelar su computadora de manera segura desde la línea de comandos.

Hibernación y Dormir en Linux

Hibernar una computadora guardará el contenido actual de la memoria de la computadora (el RAM memoria en su computadora) al disco, especialmente al espacio de intercambio. Después de esto, la energía se cortará automáticamente por una llamada al hardware, y cuando reinicie la computadora, el contenido de la memoria se leerá desde el espacio de intercambio a la memoria principal y podrá continuar usando la computadora exactamente en el punto en el que hibernó. eso.

Existe un desafío cuando se trata de hibernar una instancia de Linux usando la línea de comando: necesitará un espacio de intercambio lo suficientemente grande para encapsular todo el tamaño de la RAM y, potencialmente, algo adicional para el uso de intercambio simultáneo normal por parte de las aplicaciones. Por eso, si tiene 8 GB de memoria RAM en su sistema, es factible que desee adjudicar un espacio de intercambio de 16 a 20 GB 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 línea de comandos de Linux.

Un estado de reposo es muy equivalente, aún cuando la energía no se eliminará por completo. Su memoria, y en ocasiones su CPU, permanecerán bajo energía de modo que cuando regrese a la máquina, y a modo de ejemplo presione la barra espaciadora o haga clic en un botón del mouse (como eventos de activación), la computadora comenzará a operar nuevamente en el punto donde lo pones a dormir. Por lo general, estos eventos de activación se pueden configurar desde el BIOS.

Por lo general, se puede entrar al BIOS de su computadora a lo largo del inicio de su computadora, siempre que no se haya hibernado o puesto en suspensión, sino que se haya apagado por completo la última vez que lo usó. A menudo, se puede entrar presionando una tecla como F2 o DEL (o cualquier otra tecla que se muestre en la pantalla o disponible en el manual del fabricante de la placa base) a lo largo del inicio temprano de su sistema (tan pronto como se muestre algún 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 el kernel).

Estos niveles están integrados en el kernel y su disponibilidad depende del sistema operativo que se utilice. Los niveles son Suspender a inactivo (bien llamado s2idle o congelar), Suspender en memoria (mem o más correctamente profundo) y Suspender en disco (disco). Su sistema además puede admitir un modo de espera (standby o shallow). ¡Pronto aprenderemos más acerca de cómo descubrir qué niveles están disponibles en su sistema y cómo controlarlos!

¿Los equipos de escritorio no pueden presentar hibernación o suspensión?

Curiosamente, mientras que la suspensión en memoria y la suspensión en disco suelen estar disponibles en el kernel y son compatibles con el sistema, el sistema operativo que se ejecuta en la parte de arriba del kernel, con cierta regularidad, no presenta estas opciones en su GUI / Escritorio.

A modo de 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 o espera

Cerrar sesión, reiniciar, apagar y cambiar de usuario, pero no Dormir, Apoyar ni Hibernar! Ser capaz de suspender aún este sistema en memoria o disco sería un gran paso adelante, inclusive si tenemos que llamar al terminal para hacerlo. La próxima sección explicará cómo hacer esto, pero primero echemos un vistazo a las alternativas disponibles en su sistema y lo que significan.

Si ejecuta cat /sys/power/state en su línea de comando, verá algo equivalente a 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. Además puede ver standby o su sistema.

los freeze La opción, cuando se establece, iniciará un estado de suspensión ligero solo basado en software para su 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 de energía. Aunque esta opción y estado siempre es compatible y limita el uso de energía, es la forma más ligera de detener su máquina. Si no tiene otras opciones disponibles, esto aún puede ahorrar en las facturas de electricidad, aún cuando no tanto como apagar el sistema.

Por eso, la pregunta para esta opción / estado se torna sobre la conciencia (dejar el sistema en un estado listo para utilizar y como dejado y ahorrar un poco en lugar de apagarlo, pero tener que volver a abrir aplicaciones y ahorrar más). Es de esperar que su sistema operativo y hardware además sean compatibles con otros estados. Si no es así, considere actualizar o cambiar su sistema operativo y / o actualizar el firmware de su BIOS y otros dispositivos de hardware a sus últimas versiones. Cambiar las alternativas asociadas con la energía en el BIOS además puede ayudar.

los mem La opción, cuando se establece, iniciará un Suspend-To-Idle, que es idéntico al congelar opción, o hacer una suspensión a RAM, donde todo en el sistema se pone en un estado de bajo consumo de energía excepto la memoria. La opción que se utilice (Suspend-To-Idle o Suspend-To-RAM) depende de la configuración del /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 términos generales, esperaría que esta opción se establezca de forma predeterminada en deep por defecto (como lo indica [code]) en todos los sistemas operativos Linux, simplemente debido a que cuando uno establece el /sys/power/state opción a mem, uno esperaría que el sistema escribiera el contenido en la memoria (dicho de otra forma, Suspend-To-RAM, que se configura usando deep en /sys/power/mem_sleep) en lugar del modo Suspend-To-Idle como lo indica s2idle.

Tenga en cuenta además que, por eso, es factible usar dos formas diferentes de suspender a inactivo: ya sea escribiendo freeze para /sys/power/state, o escribiendo s2idle para /sys/power/mem_sleep y posteriormente escribiendo mem para /sys/power/state.

Como puede ver, la terminología utilizada es un poco confusa y entremezclada 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 dejar /sys/power/mem_sleep ajustado a deep y escribe freeze para /sys/power/state a Suspend-To-Idle, y para escribir mem para /sys/power/state a Suspender a RAM.

En conclusión, tenemos la última opción (siempre que su sistema no tenga la standby opción, que es una alternativa de Power-On-Suspend donde la CPU mantiene la energía) y que es disk. Esta opción nos posibilita Suspend-To-Disk. Simplemente, es la opción Hibernar que describimos previamente, mientras que Suspend-To-Idle o Suspend-To-RAM pueden considerarse modos de suspensión. En este modo, todos los datos de la memoria se escriben en el disco, por lo que la memoria además puede liberarse de energía: un apagado completo.

En resumen, la forma más fácil de elegir cualquiera de las tres opciones principales de suspensión de energía es tener (o dejar) /sys/power/mem_sleep ajustado a deep, ignore este archivo y después seleccione nuestros modos de suspensión de energía usando /sys/power/state solo, y por escrito freeze (Suspender a inactivo), mem (Suspender a RAM), o disk (Suspend-To-Disk) a este archivo. Veamos cómo hacer esto de forma segura.

Cómo hibernar, dormir o congelar

Queremos tener un script que hiberne, suspenda o congele nuestra computadora de manera segura. ¿Por qué la mención de la seguridad? Bueno, considera cómo escribir freeze para /sys/power/state congelará inmediatamente el sistema y lo restaurará al mismo estado exacto cuando se presiona una tecla o se hace clic en un mouse (dependiendo de que tales opciones estén habilitadas a través de la configuración del BIOS). ¡Su escritorio, desbloqueado, aún está desbloqueado!

Por eso, necesitamos un script que no solo hiberne, suspenda o congele nuestra máquina, sino que además bloquee nuestro escritorio. La implementación de esto dependerá del sistema operativo, así como del Escritorio / GUI escogido.

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 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, a modo de ejemplo), revelará una o más alternativas para bloquear su terminal desde la línea de comandos. Para esta guía, usaremos Linux Mint 20 con xcfe.

Definimos nuestro hibernate.sh guión de la próxima 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 superusuario / root. Simplemente facturamos sleep 0.1 como un comando ficticio. El único propósito aquí es que los comandos de sudo posteriores (como el último) no requieran que ingresemos la autenticación, puesto que es un poco difícil ingresar una contraseña en un terminal cuando su pantalla ya está bloqueada 😉

Después de esto, invocamos el sistema operativo y la elección del comando de bloqueo específico del escritorio / GUI / administrador de ventanas, siendo xflock4 para xcfe en Linux Mint 20. A continuación, dormimos durante 3 segundos usando sleep 3.

En conclusión, escribimos (usando echo) la palabra disk para /sys/power/state usando tee (ver man tee para obtener más información si esto es de interés, simplemente tee lee de la entrada estándar y escribe en un archivo aquí) y sudo. Esto hibernará nuestro sistema en el disco (y apagará la computadora) siempre que tenemos suficiente espacio de intercambio como se describe previamente en esta guía.

Cambiar este script a Suspend-To-RAM / Memory ahora es fácil: simplemente intercambie la palabra disk para mem.

Definimos nuestro sleep.sh guión de la próxima 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

Dimos el paso extra de escribir deep para /sys/power/mem_sleep para estar en el lado seguro de energía y para evitar inactivo para suspender. Esto solo funcionará si deep es una alternativa real en su sistema (recuerde ejecutar cat /sys/power/mem_sleep para descubrir los modos de suspensión de la memoria y garantizar deep es uno de ellos). Si deep ya está seleccionado como el valor predeterminado actual, se mostrará como [deep].

En conclusión, además podemos hacer un freeze guión de la próxima 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 para /sys/power/mem_sleep es necesario, puesto que el freeze escribir a /sys/power/state utiliza automáticamente s2idle (Suspender a inactivo). Como se describió previamente, podríamos haber escrito s2idle para /sys/power/mem_sleep y después escrito mem para /sys/power/state en su lugar, para lograr el mismo resultado, pero esta parece ser una forma más confusa de hacerlo.

Los múltiples estados de energía enumerados en los guiones anteriores, en el orden en que se presentan (disk > mem > freeze) disponen un ahorro de energía de mayor a menor y los niveles más altos pondrán la computadora en un estado de suspensión más profundo.

Además es digno de mención que solo Suspend-To-Disk (disk) proporciona la seguridad de que si de alguna manera cae la energía de su sistema, su estado guardado no se verá afectado y la computadora puede reanudarse en el punto en que lo dejó. Una vez dicho esto, además es el más lento, puesto que la E / S de disco, para el tamaño de su memoria, es necesaria.

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.

Se puede suspender una computadora para que esté inactiva (s2idle), a la memoria (mem) y al disco (disco). Esta guía describe las diversas alternativas para hacerlo, así como cómo se relaciona con el hardware subyacente. Los sistemas operativos habituales, aún cuando admiten la hibernación y la suspensión, no siempre anuncian o exponen estas opciones en su GUI de escritorio.

Saber cómo ir un paso más allá en 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 se lastimó en los múltiples experimentos realizados para esta guía 🙂

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.