I servizi ben noti in Linux possono essere aggiunti all’avvio senza problemi, perché la maggior parte di essi sono dotati del proprio script, che viene eseguito utilizzando i comandi ‘chkconfig’ e ‘systemctl’.
Per esempio, per aggiungere il servizio ‘Apache httpd’ all’avvio, esegui uno dei seguenti comandi in base al tuo gestore di sistema. Allo stesso modo puoi aggiungere qualsiasi servizio ben noto come richiesto all’avvio.
Per il sistema Sys V init:
# chkconfig --level 35 httpd on
Per il sistema systemd:
# systemctl enable httpd
A volte potresti aver bisogno di aggiungere uno script o comando o servizio personalizzato all’avvio/boot. Se è così, come si fa?
In questo articolo, cerchiamo di capire come utilizzare i seguenti tre metodi per implementarlo:
- Usando il file /etc/rc.d/rc.local
- Usando il file crontab
- l’unità di servizio systemd
Metodo-1: usando il file /etc/rc.d/rc.local
Il file “/etc/rc.local” viene tradizionalmente eseguito dopo che tutti i normali servizi del computer sono stati avviati alla fine del processo di passaggio a un runlevel multiutente.
Questo metodo funziona anche sul sistema systemd, ed è necessario aggiungere la posizione del vostro script al file ‘/etc/rc.d/rc.local’ da eseguire al boot.
Assicuratevi che il file abbia il permesso di esecuzione.
# chmod +x /etc/rc.d/rc.local
Per capire questo in dettaglio, creeremo un semplice script come mostrato di seguito, ma potete creare qualsiasi script secondo necessità:
# vi /opt/scripts/run-script-on-boot.sh#!/bin/bashdate > /root/on-boot-output.txthostname > /root/on-boot-output.txt
Una volta che lo script è pronto, impostate il permesso eseguibile come mostrato di seguito:
# chmod +x /opt/scripts/run-script-on-boot.sh
Finalmente aggiungi lo script in fondo al file:
# vi /etc/rc.d/rc.local/opt/scripts/run-script-on-boot.sh
Riavvia il sistema per verificare questo:
# reboot
Metodo-2: Usando il file crontab
cron esegue automaticamente lavori programmati nel backend ad un orario specifico.
Questo può essere facilmente realizzato usando una stringa speciale chiamata "@reboot"
con cron job.
@reboot è una stringa speciale e permette all’utente di eseguire qualsiasi comando o script all’avvio (boot time).
Questo esempio esegue il file ‘/opt/scripts/run-script-on-boot.sh’ al riavvio del sistema.
Useremo lo stesso script creato nell’esempio precedente. Per farlo, basta aggiungere la seguente voce nel file crontab:
# crontab -e@reboot /opt/scripts/run-script-on-boot.sh
Riavvia il sistema per verificare questo:
# reboot
Metodo-3: Usare l’unità di servizio systemd
Questo metodo funziona solo sul sistema systemd ed è molto semplice.
Per farlo, è necessario creare uno script di avvio di systemd e metterlo nella directory “/etc/systemd/system/”.
Questo è il nostro script di esempio per l’avvio di systemd:
# vi sample-on-boot-script.serviceDescription=Run a Custom Script at StartupAfter=default.targetExecStart=/opt/scripts/run-script-on-boot.shWantedBy=default.target
Una volta posizionato lo script nella posizione di systemd, eseguite il seguente comando per aggiornare i file di configurazione di systemd e abilitare il servizio:
# systemctl daemon-reload# systemctl enable sample-on-boot-script.service
Riavvia il tuo sistema per controllare questo:
# reboot
Suggerimenti bonus:
Se vuoi eseguire uno script in background, devi aggiungere il simbolo della virgola finale "&"
.
/Path/To/My_Script &
Se vuoi eseguire il comando come un utente diverso, usa il seguente formato:
su - $USER -c /Path/To/My_Script
Conclusione
Questo tutorial tratta brevemente di come aggiungere uno script o un comando o un servizio personalizzato all’avvio.