Come eseguire i comandi e gli script Linux su un riavvio di un sistema

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

Applicazioni di avvio

Ubuntu e altre distribuzioni basate su gnome sono dotate di un'applicazione semplicemente chiamata "Applicazioni di avvio". Può essere utilizzato per la gestione di app e script funzionanti su un nuovo sistema di sistema.

Avvia l'app "Avvio delle applicazioni" dal lancio dell'applicazione e fai clic sul pulsante "Aggiungi" per aggiungere una nuova voce.

Compila i campi "Nome" e "Command" secondo le tue esigenze e quindi fare clic sul pulsante "Aggiungi" per terminare la creazione di una nuova voce. La voce creata nello screenshot seguente invierà un promemoria "Fai un backup" come notifica di sistema su ogni riavvio / accesso. Puoi sostituirlo con il tuo comando o con il percorso completo del tuo script bash. È inoltre possibile utilizzare qualsiasi comando di sistema o eseguibili esistenti solitamente situati in varie cartelle "bin" attraverso il filesystem.

Come indicato sopra, viene mostrato un promemoria di backup su ogni riavvio.

SystemD

SystemD è un gestore demone e servizi che contiene varie utility per gestire i processi di sistema e i componenti del sistema operativo. Nella sua forma semplicistica, in genere viene utilizzato per iniziare 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, prima è necessario creare le cartelle e il file richiesti eseguendo i comandi di seguito:

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

Sostituisci "nano" con il comando del tuo editor di testo preferito. Sostituire "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à]
Descrizione = Invia un promemoria di backup su ogni riavvio
Partef = sessione grafica.bersaglio
[Servizio]
ExecStart = Bash -c 'Sleep 10; Notify-Send "Make A Backup" '
Type = OneShot
[Installare]
WANTEDBY = sessione grafica.bersaglio

Il codice sopra è piuttosto semplice. Invia una notifica "Fai un backup" 10 secondi dopo la carica di sessione grafica (una volta ogni riavvio o accesso).

Esegui i comandi di seguito per abilitare il servizio in modo che possa eseguire automaticamente su ogni riavvio.

$ chmod 644 ~/.config/systemd/utente/backup_reminder.servizio
$ SystemCtl -User abilita backup_reminder.servizio
$ SystemCtl-User Daemon-Reload
$ riavvia

Questo è solo un semplice esempio di esecuzione di un comando di base su avvio utilizzando SystemD. È inoltre possibile creare servizi avanzati con più condizioni e più comandi. Per ulteriori informazioni, consultare Systemd Man Page eseguendo il comando di seguito:

$ man systemd

Si noti che questo esempio spiega la creazione di un nuovo servizio che non richiede l'accesso alla root ed è adatto per le app di avvio automatico che non richiedono autorizzazioni di root. Se si desidera avviarsi automaticamente gli script che richiedono l'accesso alla radice, è necessario creare un nuovo servizio SystemD nella directory “/etc/systemd/system” anziché “~/.Cartella config/systemd/utente "e omettere l'interruttore" -user "nei comandi sopra menzionati.

Lavoro cron

Cron è uno strumento che può eseguire periodicamente attività programmate in base alle condizioni specificate da un utente. Questi lavori programmati sono creati in Crrontab in un formato predefinito. In termini semplici, Crrontab dice a Cron quali lavori funzionano in che punto.

Come SystemD, i lavori Crrontab possono essere utilizzati per avviare le app ed eseguire automaticamente script su avvio. Per aggiungere un nuovo lavoro Cron, eseguire il comando di seguito:

$ crontab -e

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

Shell =/bin/bash
@reboot sleep 30 && display =: 0 gnome-terminale

È possibile utilizzare il tuo comando o fornire un percorso completo per uno script di shell.

Si noti che a differenza di SystemD, Cron non è in grado di rilevare se la sessione grafica è stata caricata o meno. È necessario specificare un periodo di attesa stimato fino al caricamento del server X e un identificatore di visualizzazione. Puoi sapere sul tuo ID di visualizzazione eseguendo il comando di seguito:

$ echo $ display

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.File locale ". Si noti che nei miei test, non sono stato in grado di differire l'esecuzione dello script fino a quando la sessione grafica era in diretta. L'aggiunta di qualsiasi ritardo di sonno porta al ritardo nella mostra della schermata di accesso stesso. Per questo motivo, non ho avuto successo nell'esecuzione di app grafiche all'avvio usando RC.File locale. Modifica RC.Il locale richiede anche l'accesso alla radice, a differenza di tutti gli altri esempi spiegati sopra.

Per aggiungere comandi / script a RC.File locale, eseguire il comando di seguito (crea un nuovo RC.file locale se non esiste):

$ sudo nano /etc /rc.Locale

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

#! /Bin/Bash
Path/to/my_script.sh
uscita 0

Fare rc.eseguibile file locale eseguendo il comando di seguito:

$ sudo chmod +x /etc /rc.Locale

Basta riavviare perché lo script di startup abbia effetto.

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 al root, consiglierei di utilizzare l'app GUI "Avvio. Se si desidera eseguire app e script con accesso alla radice, ti suggerirei di creare un servizio di sistema a livello di sistema.