Cómo ejecutar scripts y comandos en suspensión y reanudación en Linux

La mejor manera de ejecutar scripts y comandos en suspensión y reanudación en Linux antes de suspender (o después de reanudar) es usar el sistema de inicio systemd. Esto se debe al hecho de que el sistema init interactúa directamente con el kernel y los sistemas de energía. 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 sistema de inicio de su PC puede ser peligroso si no sabe lo que está haciendo. Asegúrese de seguir las instrucciones de este tutorial tan de cerca como sea posible para evitar posibles contratiempos.

No todas las distribuciones modernas de Linux son compatibles con el sistema de inicio systemd. Algunos usan advenedizo 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 se ejecuta en 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 por / 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 directorio / usr / lib / systemd / system-sleep /. Los propios scripts pueden hacer cualquier cosa, pero hay una cierta sintaxis que se debe respetar. Comience abriendo una ventana de terminal. Usando sudo -s, obtenga un shell de root.

  Cómo ver Hulu en el escritorio de Linux con Electronplayer

A continuación, suba el editor de texto nano 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 fundamental y, sin él, el intérprete no podrá leer correctamente el código y los comandos.

#!/bin/bash/

La siguiente parte del guión es el «si». Esto le dirá al sistema de control de energía que «si» el sistema está a punto de dejar de funcionar para suspender, algo debería suceder. Pega el código a continuación:

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

Cambie sh /path/to/script/to/run.sh en el script a lo que le gustaría 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 «if» no necesita ser sh /path/to/script/to/run.sh. También puede usar esto para ejecutar varios comandos. Siempre que bash pueda reconocerlo como un comando, se ejecutará.

  Cómo instalar el tema del icono de Oranchelo en Linux

La última parte de la secuencia de comandos «antes de suspender» es agregar la parte «si no». No es necesario modificar este aspecto del script, ya que, en este ejemplo, nos preocupa hacer algo antes de que el sistema deje de funcionar y no cuando vuelva a activarse.

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

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

Ejecutar un comando después de reanudar

Ejecutar un comando después de reanudar funciona de manera muy similar a ejecutar 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 ocurriera después de la línea «elif».

Para hacer un guión posterior al currículum, primero agregue el shebang como la primera línea.

#!bin/bash

En la siguiente línea, agregue la parte «si» del script.

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». Siempre que sea una operación de comando normal, systemd y bash lo ejecutarán.

Ejecución de comandos al inicio y reanudación

Si desea ejecutar dos comandos opuestos; uno antes de suspender y otro al reanudar, es posible. Solo significa personalizar el script y agregar líneas tanto debajo de la línea «si» como de la línea «elseif».

  Cómo alojar su propio servidor Git en Linux

Como de costumbre, comience publicando el tema 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 si, reemplace «# reemplazar con comando» con cualquier comando que desee ejecutar justo antes de que el sistema deje de funcionar. 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 se pueda ejecutar, 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

A partir de ahora, cada vez que suspenda o reanude, se deberían ejecutar comandos personalizados dentro del script.

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