GNU/Linux >> Linux Esercitazione >  >> Debian

Come eseguire uno script all'avvio in Debian 11

L'avvio in termini semplici si riferisce al tempo dall'accensione all'ora di avvio dell'utente. Ciò si ottiene utilizzando uno script di avvio che contiene istruzioni su quale codice caricare e quali processi e applicazioni avviare.

Ci sono alcune fasi dell'avvio di Linux (prima dell'avvio in systemd o System V init e prima che l'ambiente desktop venga caricato) e puoi configurare il tuo script o programma di avvio automatico in qualsiasi fase in cui potrebbe essere un singolo comando o piuttosto un serie di comandi o uno script di shell eseguibile. Tuttavia, è utile notare che potrebbero esserci alcune differenze nella procedura di avvio tra le varie distribuzioni e versioni di Linux.

Le versioni moderne di Linux si avvieranno prima in systemd mentre le versioni precedenti utilizzano System V init . Entrambi i metodi eseguiranno cron e rc.local prima che gli ambienti desktop come KDE o GNOME vengano caricati. D'altra parte, le distribuzioni Linux basate su server eseguono la shell predefinita, ad esempio Bash, dopo che l'utente ha effettuato l'accesso alla console invece di caricare l'ambiente desktop.

Per aggiungere servizi e script in modo appropriato all'avvio su Debian 11, è necessario creare unità Systemd. Questa guida si concentrerà su tre metodi per aggiungere script all'avvio sulla tua macchina Debian 11:

  1. Utilizzo di systemd
  2. Utilizzo di cron
  3. Utilizzo di rc.local

Cominciamo.

Cos'è un'unità di sistema?

Le unità Systemd sono file di configurazione che contengono informazioni per la gestione o l'esecuzione appropriata di determinati file di sistema. In systemd, un'unità indica qualsiasi risorsa su cui il sistema sa come operare e gestire. Le unità Systemd vengono solitamente utilizzate per avviare, arrestare, gestire servizi, organizzare processi di avvio, mantenere attività e processi, creare socket, punti di montaggio automatico, scambiare file o partizioni, montare file system e inizializzare l'hardware.

Le unità Systemd sono posizionate nella directory /etc/systemd/system. Qualsiasi script che desideri eseguire all'avvio utilizzando le unità Systemd deve essere indicato in un file (unità) nella directory sopra menzionata.

Per semplificare la relazione tra systemd e unità meglio, considera systemd come allenatore di una squadra, quindi le unità come i servizi e le necessità della squadra, ad esempio palloni, calli, palestra, campo da gioco, divise da gioco, solo per citarne alcuni. Quindi, per fare in modo che un allenatore gestisca la squadra affinché si comporti meglio, utilizza le attrezzature disponibili per migliorare profondamente la squadra. Allo stesso modo, il systemd utilizza le unità per controllare e gestire i processi ei servizi del sistema.

Alcuni dei tipi di unità Systemd includono:
  • Obiettivo – Una raccolta di unità che descrive un punto di sincronizzazione. Il punto di sincronizzazione viene utilizzato all'avvio per avviare il sistema in uno stato specifico.
  • Montaggio – Un'unità di questo tipo controlla il punto di montaggio del file system.
  • Dispositivo – Un'unità di questo tipo attiva l'attivazione basata sul dispositivo come un driver di dispositivo.
  • Presa – Questo tipo di unità attiva un servizio quando il servizio riceve traffico in entrata su una presa di ascolto.
  • Percorso – Questo tipo di unità monitora file/directory, quindi attiva/disattiva un servizio se viene recuperato il file o la directory indicati.
  • Timer – Questo tipo di unità esegue l'attivazione e la disattivazione di un servizio specifico in base a un timer o allo scadere del tempo impostato.
  • Ambito di applicazione – Un'unità che sistematizza e gestisce i processi esteri.

Elenco delle unità di sistema

Di seguito è riportata una rapida panoramica delle unità di sistema esistenti nel nostro sistema utilizzando ls comando.

ls /etc/systemd/system

Uno dei file esclusi dall'istantanea sopra è il tomcat.service, i cui contenuti sono mostrati dall'immagine seguente.

Per familiarizzare con i file di configurazione dell'unità nell'istantanea sopra, guarda le seguenti informazioni dettagliate. Non preoccuparti perché l'unità che creerai per eseguire il tuo script sarà un po' più semplice.

Le direttive dell'unità includono;
  • Descrizione: Questa direttiva di solito consente di aggiungere una descrizione per un'unità; qui è possibile impostare il nome dell'unità da riconoscere.
  • Vuole: Le dipendenze dell'unità sono normalmente specificate qui. Un punto da notare è che esistono varie direttive per questo scopo simile. Ad esempio, la direttiva Richiede stipula strette dipendenze, senza le quali l'unità non può funzionare. Contrariamente a Requires, Wants viene utilizzato per specificare le dipendenze senza le quali l'unità può continuare a funzionare.
  • Dopo: L'unità attuale inizierà dopo l'unità designata in questa direttiva.
Direttive della sezione [Servizio]:

  • Digita: fork indica che il servizio deve essere interrotto mantenendo i processi figlio a cui deve essere assegnata una Process Identification (PID).
  • Ambiente: Qui è possibile specificare le variabili di ambiente dell'unità.
  • ExecStart: Questa direttiva ti permette di specificare il percorso ei comandi che vuoi eseguire.
  • ExecStop: è possibile indicare il comando utilizzato per arrestare l'unità.
  • Stato uscita riuscita: Questa direttiva consente di enumerare lo stato di uscita e i segnali.
  • Utente: è possibile identificare l'utente proprietario dell'unità.
  • Gruppo: puoi enumerare il proprietario del gruppo dell'unità.
  • UMask: puoi specificare la maschera utente.
  • RiavviaSec: Se l'unità si riavvia spontaneamente, è possibile specificare il tempo di attesa per riavviare il servizio.
  • Riavvia: è possibile delineare per Systemd quando l'unità deve essere riavviata. Le opzioni accessibili sono sempre su watchdog, in caso di errore, in caso di anomalia, in caso di successo e in caso di interruzione.

La direttiva [Install] nell'istanza sopra è WantedBy.

  • Ricercato da: Questa direttiva consente di delineare l'unità come una dipendenza; è simile a Vuole direttiva, ma per designare se l'unità corrente è ben concepita come dipendenza da un'altra unità.

Altre direttive usuali nella sezione [Unità] che non sono state incorporate nello screenshot precedente:

  • Richiede: In questa direttiva, puoi designare dipendenze per evitare errori di avvio. Contrario al Vuole direttiva, se una dipendenza designata con la direttiva Richiede non è soddisfatta, l'unità non funzionerà.

Nella sezione [Servizio]:

  • File PID: La direttiva fork richiede la direttiva PIDFile, che ha il percorso del file PID del processo figlio affinché Systemd lo rilevi.
  • StartLimitInterval: specifica che l'unità ha 60 secondi per 10 tentativi di riavvio in caso di errore.
  • StartLimitBurst: Questa direttiva mostra il limite di tentativi, nell'esempio precedente, dieci tentativi in ​​60 secondi.

Puoi visitare questo link per maggiori informazioni sulle unità Systemd.

Esegui uno script all'avvio in Debian 11

Metodo 1:utilizzo dell'unità systemd per eseguire uno script all'avvio

L'esecuzione di uno script all'avvio può essere semplice e avere una configurazione inferiore rispetto al file tomcat.service utilizzato in precedenza per visualizzare il contenuto comune dell'unità.

I file (unità) con le informazioni sugli script in esecuzione all'avvio sono posizionati in /etc/systemd/system. Per esprimere uno script da eseguire all'avvio, è necessario generare una nuova unità per questo script. In quanto tale, puoi utilizzare qualsiasi editor per scopi di creazione. Tuttavia, nel nostro caso, andremo con l'editor nano, in cui creeremo un'unità denominata script.service. Tieni presente che questo nome può essere modificato in una qualsiasi delle tue preferenze per identificare comodamente il tuo script.

sudo nano /etc/systemd/system/script.service

Successivamente, copia e incolla il codice seguente nel file che hai generato in /etc/systemd/system.

</PATH/TO/Script.sh> with the path to your script.
[Unit]

Description=Your Script Name here

After=default.target

[Service]

ExecStart=/PATH/TO/Script.sh

[Install]

Dopodiché, ricorda di sostituire con il nome del tuo script e con il percorso del tuo script come mostrato di seguito:

Dopo aver copiato i dati nel file in /etc/systemd/system/, dovresti abilitarlo tramite il comando systemctl visualizzato di seguito.

sudo systemctl enable script.service

Nota: Ricordati di sostituire con il nome appropriato che hai assegnato all'unità.

E boom! Ora il tuo script è pronto per l'avvio in Debian 11

Metodo 2:come eseguire automaticamente un programma all'avvio di Linux tramite Cron

Cron è un demone utilizzato per eseguire comandi pianificati. I comandi sono memorizzati nella tabella lavori crown o contrab e sono peculiari per ogni utente del sistema. Viene avviato durante l'avvio del sistema da System V init o systemd e puoi pianificare il tuo lavoro o invece il programma da eseguire direttamente durante l'avvio del sistema stesso seguendo attentamente i passaggi successivi:

Passaggio 1: Apri l'editor contrab predefinito eseguendo il comando seguente:

crontab -e

Se è la prima volta che esegui il comando contrab, ti verrà richiesto di scegliere un editor come mostrato dal prossimo pezzo di codice:

$ crontab -e
no crontab for user - using an empty one

Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /bin/ed

Choose 1-3 [1]:

Dopo aver selezionato il numero specificato di opzioni, verrà creato un contrab per te ed eseguito utilizzando i privilegi dell'utente. Se hai bisogno che il tuo programma venga eseguito come utente root, esegui contrab -e come utente root stesso

Passaggio 2: Aggiungi una riga che inizia con @reboot

# m h dom mon dow command
@reboot

Passaggio 3: Inserisci il comando preferito per avviare il programma dopo il @riavvio come mostrato di seguito:

@reboot /sbin/ip addr | grep inet\ | tail -n1 | awk '{ print $2 }' > /etc/issue && echo "" >> /etc/issue

@reboot definisce l'attività da eseguire durante l'avvio del sistema.

Nota: Assicurati di utilizzare il percorso completo per i tuoi programmi quando possibile e scrivi i tuoi comandi in un'unica riga per evitare conflitti con il sistema.

Passaggio 4:salva il file

Dopo aver chiuso l'editor utilizzando "Ctrl + x" come mostrato di seguito

quindi "Y" per salvare,

Dovresti vedere un comando che dice "installazione di nuovo contrab" nel terminale come mostrato di seguito:

Passaggio 5:configurazione

Infine, puoi eseguire un controllo per confermare se il contrab è stato configurato correttamente. Tuttavia, è essenziale notare che questo passaggio non è obbligatorio

crontab -l

E questo dovrebbe bastare, ragazzi!

Metodo 3:come eseguire automaticamente un programma all'avvio di Linux tramite RC.LOCAL

rc.local è semplicemente un'eredità del sistema di inizializzazione di System V. È l'ultimo script da eseguire prima di procedere a una schermata di accesso per l'ambiente desktop oa una richiesta di accesso al terminale. Di solito è uno script di shell Bash e puoi anche eseguire qualsiasi cosa dallo script. Utilizzare i passaggi seguenti per configurare lo script rc.local locale.

Passaggio 1: Per prima cosa, crea il file /etc/rc.local se non esiste nel tuo sistema usando il tuo editor preferito e come utente root. Nel nostro caso, andremo con l'editor Vi eseguendo il seguente comando:

sudo vi /etc/rc.local

Passaggio 2: Aggiungi codice segnaposto

Successivamente, aggiungi il seguente codice segnaposto al file

#!/bin/bash

exit 0

Deve iniziare con l'interprete (/bin/bash) e terminare con un codice di uscita (0 che indica il successo).

Passaggio 3: Aggiungi comando e logica

Qui aggiungerai comandi e logiche ai file, se necessario.

/sbin/ip addr | grep inet\ | tail -n1 | awk '{ print $2 }' > /etc/issue
echo "" >> /etc/issue

Dai un'occhiata a come viene fatto nella seguente istantanea.

Passaggio 4:salva ed esci da Vi Editor

Per salvare e uscire da un file nell'editor Vim, usa “:wq” comando. Vogliamo salvare il file ed uscire dall'editor contemporaneamente per eseguire il comando che rende eseguibile il file. Pertanto, premere ESC che passerà alla modalità normale. Successivamente, digita :wq e premi "Invio".

Passaggio 5: Rendi il file eseguibile

Dopo aver salvato il file, dobbiamo renderlo eseguibile usando il seguente comando:

sudo chmod a+x /etc/rc.local

Il file dovrebbe quindi essere eseguito come utente root durante l'avvio del sistema.

Conclusione

In conclusione, eseguire script all'avvio in Debian 11 utilizzando Systemd, cron e rc.local è relativamente semplice. Qualsiasi utente Linux può completare rapidamente questa attività creando un semplice file all'interno della directory units. Questo articolo ha esaminato diversi modi per eseguire uno script all'avvio nella distribuzione Linux, in particolare Debian.

Ognuno ha i suoi vantaggi e svantaggi, ma in generale, systemd e cron dovrebbero essere le opzioni più preferite. Dall'altro lato, puoi anche usare rc.local che abbiamo anche esaminato.


Debian
  1. script di avvio utorrent / esegui utorrent all'avvio – Ubuntu 14.04 / 14.10

  2. Debian:come eseguire programmi a 32 bit su una Debian/ubuntu a 64 bit?

  3. Come eseguire uno script??

  4. Come eseguire uno script quando arriva una posta nel server di posta? (Debian)

  5. Come eseguire uno script con systemd subito prima dell'arresto?

Come eseguire uno script Python in PHP

Come installare Wine per eseguire applicazioni Windows su Debian

Come eseguire lo script della shell come servizio SystemD in Linux

Come eseguire Unetbootin su Debian 11 Bullseye

Come eseguire uno script Bash

Debian – Come riparare Grub su Debian?