- - Cómo ejecutar scripts y comandos al suspender y reanudar en Linux

Cómo ejecutar scripts y comandos al suspender y reanudar en Linux

La mejor manera de ejecutar scripts y comandos ensuspender y reanudar en Linux antes de suspender (o después de reanudar) es utilizar el sistema systemd init. Esto se debe al hecho de que el sistema init interactúa directamente con el núcleo y los sistemas de alimentación. Aprender a trabajar con esta herramienta permitirá a cualquier usuario obtener mucho control sobre su sistema operativo Linux,

Por favor, comprenda que jugar con el initsistema en su PC puede ser peligroso si no sabe lo que está haciendo. Asegúrese de seguir las instrucciones de este tutorial lo más cerca posible, para evitar posibles percances.

No todas las distribuciones modernas de Linux admitensystemd sistema de inicio. Algunos usan advenedizos o algo completamente diferente. En este tutorial, nos centraremos en systemd, ya que es el sistema de iniciación más común. Si está buscando realizar esta tarea en algo que no ejecuta lo que cubrimos en este artículo, considere buscar instrucciones en el manual de su sistema operativo.

Nota: los usuarios de Debian deben reemplazar todas las instancias de usr / lib / systemd / system-sleep con / lib / systemd / system-sleep /

Ejecutar un comando antes de suspender

Para ejecutar un script antes de suspender, coloque cualquier archivo de script bash en el / usr / lib / systemd / system-sleep / directorio. Los propios scripts pueden hacer cualquier cosa, pero hay una cierta sintaxis que se debe cumplir. Comience abriendo una ventana de terminal. Usando sudo -s, gana un shell raíz.

A continuación, suba el editor de nano texto dentro del directorio system-sleep:

nano /usr/lib/systemd/system-sleep/pre-suspend.sh

Agregue el shebang al comienzo del guión. Agregar esto es crítico, y sin él, el intérprete no podrá leer correctamente el código y los comandos.

#!/bin/bash/

La siguiente parte del script es el "si". Esto le dirá al sistema de control de energía que "si" el sistema está a punto de fallar, algo debería suceder. Pega el siguiente código:

if [ "${1}" == "pre" ]; then
sh /path/to/script/to/run.sh

Cambio sh /path/to/script/to/run.sh en el script a lo que quiera ejecutar en su PC (o servidor) Linux justo antes de que el sistema se suspenda. Tenga en cuenta que la línea directamente después de "si" no necesita ser sh /path/to/script/to/run.sh. También puede usar esto para ejecutar varios comandos. Mientras bash pueda reconocerlo como un comando, se ejecutará.

La última parte del script "antes de suspender" es agregar la parte "else if". No es necesario modificar este aspecto del script, ya que, en este ejemplo, nos preocupa hacer algo antes de el sistema se cae, y no cuando se reactiva.

elif [ "${1}" == "post" ]; then
# nothing goes here
fi

Cuando todo se haya agregado al archivo, presione Ctrl + O para salvar nano.

Ejecutar un comando después de reanudar

Ejecutar un comando después de reanudar funciona de manera muy similarejecutando algo antes de suspender. La única diferencia real es que, en lugar de agregar un comando después de la parte "si" del script, haría que la parte más importante del código ocurra después de la línea "elif".

Para crear un script posterior a la reanudación, primero, agregue el shebang como la primera línea.

#!bin/bash

En la siguiente línea, agregue la parte "si" de la secuencia de comandos.

if [ "${1}" == "pre" ]; then
# nothing goes here

Con ese fragmento de código pegado en el script bash, baje y pegue la sección "else if".

elif [ "${1}" == "post" ]; then
sh /path/to/script/to/run.sh
fi

Una vez más, está bien escribir cualquier cosa debajo de la línea "elif". Mientras sea una operación de comando normal, systemd y bash lo ejecutarán.

Ejecutar comandos al inicio y reanudar

Si desea ejecutar dos comandos opuestos; unoantes de suspender, y uno al reanudar, es posible. Simplemente significa personalizar el guión y agregar líneas debajo de la línea "si", así como la línea "elseif".

Como de costumbre, comience publicando el shebang en el guión para el intérprete.

#!/bin/bash

A continuación, pegue la sección if del código.

if [ "${1}" == "pre" ]; then
# replace with command

Debajo de if, reemplace "# replace with command" con cualquier comando que desee ejecutar justo antes de que el sistema se caiga. Luego, vaya a la sección "elif" y haga lo mismo.

elif [ "${1}" == "post" ]; then
#  replace with command
fi

Guarde el archivo con Ctrl + O,

Actualización de permisos y uso del script

Todos los comandos necesarios están dentro del archivo de secuencia de comandos, pero antes de que pueda ejecutarse, deberá actualizar los permisos. Abra una terminal y obtenga root con: su o sudo -s. Entonces hazlo:

chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh

De ahora en adelante, cada vez que suspenda o reanude, se deben ejecutar comandos personalizados dentro del script.

Nota: ¿tiene preguntas sobre systemd system-sleep? Consulte el manual con man systemd-suspend.service.

Comentarios