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:
- a) el dimoni cron s'ha d'executar (que és el cas en circumstàncies normals) i
- 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!