Comandi Linux

Come eseguire comandi e script Linux automaticamente al riavvio del sistema

Come eseguire comandi e script Linux automaticamente al riavvio del sistema
L'esecuzione automatica di app e script all'avvio può essere utile per automatizzare attività ed eventi di avvio comuni. Questo articolo spiegherà alcuni metodi che possono essere utilizzati per avviare app e script su un nuovo riavvio o un nuovo accesso.

Applicazioni di avvio

Ubuntu e altre distribuzioni basate su GNOME vengono fornite con un'applicazione chiamata semplicemente "Applicazioni di avvio". Può essere utilizzato per la gestione di app e script che vengono eseguiti su un nuovo riavvio o accesso del sistema.

Avvia l'app "Applicazioni di avvio" dal programma di avvio delle applicazioni e fai clic sul pulsante "Aggiungi" per aggiungere una nuova voce.

Compila i campi "Nome" e "Comando" secondo le tue esigenze e quindi fai clic sul pulsante "Aggiungi" per completare la creazione di una nuova voce. La voce creata nello screenshot qui sotto invierà un promemoria "Esegui un backup" come notifica di sistema ad ogni riavvio / accesso. Puoi sostituirlo con il tuo comando o con il percorso completo del tuo script bash. Puoi anche utilizzare qualsiasi comando di sistema o eseguibile esistente di solito situato in varie cartelle "bin" attraverso il filesystem.

Come detto sopra, ad ogni riavvio viene mostrato un promemoria di backup.

Systemd

Systemd è un demone e un gestore di servizi che contiene varie utilità per gestire i processi di sistema e i componenti del sistema operativo. Nella sua forma semplicistica, viene in genere utilizzato per avviare e terminare i servizi in un nuovo ciclo di avvio.

Systemd può essere utilizzato per avviare automaticamente un'app o eseguire uno script su un nuovo avvio. Per creare la stessa notifica di promemoria di backup spiegata sopra, devi prima creare le cartelle e il file richiesti eseguendo i comandi seguenti:

$ mkdir -p ~/.config/systemd/utente
$ nano ~/.config/systemd/user/backup_reminder.servizio

Sostituisci "nano" con il comando del tuo editor di testo preferito. Sostituisci "backup_reminder" con qualsiasi altro nome che preferisci.

Incolla il codice qui sotto in backup_reminder.file di servizio creato utilizzando il comando sopra.

[Unità]
Description=Invia un promemoria di backup ad ogni riavvio
PartOf=sessione-grafica.bersaglio
[Servizio]
ExecStart=bash -c 'sonno 10; notifica-invio "Esegui un backup"'
Tipo=oneshot
[Installare]
WantedBy=sessione-grafica.bersaglio

Il codice sopra è piuttosto semplice. Invia una notifica "Esegui un backup" 10 secondi dopo il caricamento della sessione grafica (una volta ogni riavvio o accesso).

Esegui i comandi seguenti per abilitare il servizio in modo che possa essere eseguito automaticamente ad ogni riavvio.

$ chmod 644 ~/.config/systemd/user/backup_reminder.servizio
$ systemctl --user enable backup_reminder.servizio
$ systemctl --user daemon-reload
$ reboot

Questo è solo un semplice esempio di esecuzione di un comando di base all'avvio utilizzando systemd. Puoi anche creare servizi avanzati con più condizioni e più comandi. Per ulteriori informazioni, fare riferimento alla pagina man di systemd eseguendo il comando seguente:

$ man systemd

Nota che questo esempio spiega la creazione di un nuovo servizio che non richiede l'accesso come root ed è adatto per l'avvio automatico di app che non richiedono i permessi di root. Se vuoi avviare automaticamente gli script che richiedono l'accesso come root, devi creare un nuovo servizio systemd nella directory "/etc/systemd/system" invece di "~/.config/systemd/user" e omettere l'opzione "-user" nei comandi sopra menzionati.

Cron Job

Cron è uno strumento che può eseguire periodicamente attività pianificate in base alle condizioni specificate da un utente. Questi lavori pianificati vengono creati in Crontab in un formato predefinito. In termini semplici, Crontab dice a Cron quali lavori eseguire in quale momento.

Come systemd, i lavori crontab possono essere utilizzati per avviare app ed eseguire script automaticamente all'avvio. Per aggiungere un nuovo cron job, esegui il comando seguente:

$ crontab -e

Aggiungi le seguenti righe alla fine del file di testo (avvia automaticamente il terminale GNOME ad ogni riavvio):

SHELL=/bin/bash
@reboot sleep 30 && DISPLAY=:0 gnome-terminal

Puoi usare il tuo comando o fornire il percorso completo a uno script di shell.

Nota che a differenza di systemd, cron non può rilevare se la sessione grafica è stata caricata o meno. Devi specificare un periodo di attesa stimato fino al caricamento del server X e un identificatore di visualizzazione. Puoi conoscere il tuo ID display eseguendo il comando seguente:

$ echo $VISUALIZZA

Il ritardo prima dell'esecuzione del comando o dello script dipende dalla configurazione del sistema e dal tempo di avvio.

Rc.Locale

Un altro metodo per eseguire script e comandi all'avvio è usare "rc.locale” file. Nota che durante i miei test, non sono stato in grado di rinviare l'esecuzione dello script fino a quando la sessione grafica non fosse attiva. L'aggiunta di qualsiasi ritardo del sonno comporta un ritardo nella visualizzazione della schermata di accesso stessa. Per questo motivo, non ho avuto successo nell'esecuzione di app grafiche all'avvio utilizzando rc.file locale. Modifica rc.local richiede anche l'accesso root, a differenza di tutti gli altri esempi spiegati sopra.

Per aggiungere comandi/script a rc.file locale, esegui il comando seguente (crea un nuovo rc.file locale se non esiste):

$ sudo nano /etc/rc.Locale

Aggiungi i tuoi comandi tra "#! /bin/bash" e "exit 0", come mostrato di seguito:

#! /bin/bash
percorso/al/mio_script.sh
esci 0

Fai rc.locale eseguibile eseguendo il comando seguente:

$ sudo chmod +x /etc/rc.Locale

Basta riavviare affinché lo script di avvio abbia effetto startup.

Conclusione

Questi sono alcuni metodi che possono essere utilizzati per eseguire automaticamente script e app all'avvio. Se stai cercando di eseguire script che non richiedono l'accesso root, ti consiglio di utilizzare l'app GUI "Applicazioni di avvio". Se desideri eseguire app e script con accesso root, ti suggerirei di creare un servizio systemd a livello di sistema.

Circa l'autore

Nitesh Kumar

Sono uno sviluppatore di software freelance e scrittore di contenuti che ama Linux, il software open source e la comunità del software libero.

Visualizza tutti i post
Come utilizzare Xdotool per stimolare i clic del mouse e le sequenze di tasti in Linux
Xdotool è uno strumento da riga di comando gratuito e open source per simulare i clic del mouse e le sequenze di tasti. Questo articolo tratterà una b...
I 5 migliori mouse per computer ergonomici per Linux
L'uso prolungato del computer provoca dolore al polso o alle dita?? Soffri di rigidità articolare e devi continuamente stringerti la mano? Senti un do...
Come modificare le impostazioni del mouse e del touchpad utilizzando Xinput in Linux
La maggior parte delle distribuzioni Linux viene fornita con la libreria "libinput" per impostazione predefinita per gestire gli eventi di input su un...