Ricerca nel sito web

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:

  1. a) il demone cron deve essere in esecuzione (cosa che avviene in circostanze normali) e
  2. 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!