Come eseguire automaticamente comandi/script durante il riavvio o l'avvio
Sono sempre affascinato dalle cose che accadono dietro le quinte quando avvio un sistema Linux e accedo. Premendo il pulsante di accensione su un bare metal o avviando una macchina virtuale, metti in moto una serie di eventi che portano a un sistema completamente funzionante, a volte in meno di un minuto. Lo stesso vale quando ci si disconnette e/o si spegne il sistema.
Ciò che lo rende più interessante e divertente è il fatto che puoi fare in modo che il sistema operativo esegua determinate azioni all'avvio e quando accedi o esci.
In questo articolo indipendente dalla distribuzione discuteremo i metodi tradizionali per raggiungere questi obiettivi in Linux.
Nota: assumeremo l'uso di Bash come shell principale per gli eventi di accesso e disconnessione. Se ti capita di usarne uno diverso, alcuni di questi metodi potrebbero funzionare o meno. In caso di dubbi, fare riferimento alla documentazione della propria shell.
Esecuzione di script Linux durante il riavvio o l'avvio
Esistono due metodi tradizionali per eseguire un comando o eseguire script durante l'avvio:
Metodo n. 1: utilizzare un lavoro cron
Oltre al formato consueto (minuto/ora/giorno del mese/mese/giorno della settimana) ampiamente utilizzato per indicare una pianificazione, lo scheduler cron consente anche l'uso di @reboot
. Questa direttiva, seguita dal percorso assoluto dello script, ne farà eseguire l'esecuzione all'avvio della macchina.
Tuttavia, ci sono due avvertenze su questo approccio:
- a) il demone cron deve essere in esecuzione (cosa che avviene in circostanze normali) e
- b) lo script o il file crontab deve includere le variabili di ambiente (se presenti) che saranno necessarie (fare riferimento a questo thread StackOverflow per maggiori dettagli).
Metodo n. 2: utilizzare /etc/rc.d/rc.local
Questo metodo è valido anche per le distribuzioni basate su systemd. Affinché questo metodo funzioni, è necessario concedere i permessi di esecuzione a /etc/rc.d/rc.local
come segue:
chmod +x /etc/rc.d/rc.local
e aggiungi il tuo script in fondo al file.
L'immagine seguente mostra come eseguire due script di esempio (/home/gacanepa/script1.sh
e /home/gacanepa/script2.sh
) utilizzando un cron< job e rc.local, rispettivamente, e i rispettivi risultati.
#!/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
Tieni presente che a entrambi gli script devono essere concesse le autorizzazioni di esecuzione in precedenza:
chmod +x /home/gacanepa/script1.sh
chmod +x /home/gacanepa/script2.sh
Esecuzione di script Linux all'accesso e al logout
Per eseguire uno script all'accesso o all'uscita, utilizzare ~.bash_profile
e ~.bash_logout
, rispettivamente. Molto probabilmente, dovrai creare manualmente quest'ultimo file. Basta inserire una riga che richiama il tuo script in fondo a ciascun file nello stesso modo di prima e sei pronto per partire.
Riepilogo
In questo articolo abbiamo spiegato come eseguire lo script al riavvio, all'accesso e al logout. Se ti vengono in mente altri metodi che avremmo potuto includere qui, sentiti libero di utilizzare il modulo di commento qui sotto per segnalarli. Restiamo in attesa della vostra risposta!