Com executar automàticament ordres/scripts durant el reinici o l'inici


Sempre estic fascinat per les coses que passen darrere de les escenes quan arrenco un sistema Linux i inici la sessió. En prémer el botó d'engegada d'un metall nu o engegar una màquina virtual, poseu en marxa una sèrie d'esdeveniments que condueixen a un sistema totalment funcional, de vegades en menys d'un minut. El mateix passa quan tanqueu la sessió i/o tanqueu el sistema.

El que fa que això sigui més interessant i divertit és el fet que podeu fer que el sistema operatiu executi determinades accions quan arrenqui i quan inicieu sessió o tanqueu la sessió.

En aquest article distroagnòstic parlarem dels mètodes tradicionals per assolir aquests objectius a Linux.

Nota: assumirem l'ús de Bash com a shell principal per als esdeveniments d'inici de sessió i de tancament. Si en feu servir un de diferent, alguns d'aquests mètodes poden funcionar o no. En cas de dubte, consulteu la documentació del vostre shell.

Execució de scripts de Linux durant el reinici o l'inici

Hi ha dos mètodes tradicionals per executar una ordre o executar scripts durant l'inici:

A més del format habitual (minut/hora/dia del mes/mes/dia de la setmana) que s'utilitza àmpliament per indicar una programació, el programador cron també permet l'ús de @reboot. Aquesta directiva, seguida del camí absolut a l'script, farà que s'executi quan la màquina arrenqui.

Tanmateix, hi ha dues advertències a aquest enfocament:

  1. a) el dimoni cron s'ha d'executar (que és el cas en circumstàncies normals) i
  2. b) l'script o el fitxer crontab ha d'incloure les variables d'entorn (si n'hi ha) que es necessiten (consulteu aquest fil de StackOverflow per a més detalls).

Aquest mètode és vàlid fins i tot per a distribucions basades en systemd. Perquè aquest mètode funcioni, heu de concedir permisos d'execució a /etc/rc.d/rc.local de la manera següent:

# chmod +x /etc/rc.d/rc.local

i afegiu el vostre script a la part inferior del fitxer.

La imatge següent mostra com executar dos scripts d'exemple (/home/gacanepa/script1.sh i /home/gacanepa/script2.sh) mitjançant un treball cron i rc. locals, respectivament, i els seus respectius resultats.

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
#!/bin/bash
SITE="linux-console.net"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt

Tingueu en compte que ambdós scripts han de tenir permisos d'execució prèviament:

$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh

Execució de scripts de Linux a l'inici de sessió i la sortida

Per executar un script en iniciar sessió o tancar la sessió, utilitzeu ~.bash_profile i ~.bash_logout, respectivament. Molt probablement, haureu de crear aquest darrer fitxer manualment. Només cal que deixeu anar una línia invocant el vostre script a la part inferior de cada fitxer de la mateixa manera que abans i ja esteu preparat.

En aquest article hem explicat com executar l'script al reiniciar, iniciar la sessió i tancar la sessió. Si podeu pensar en altres mètodes que podríem haver inclòs aquí, no dubteu a utilitzar el formulari de comentaris a continuació per assenyalar-los. Esperem amb interès tenir notícies teves!