Presumo che tu abbia un Raspberry che utilizza raspian, che, per quanto ne so, non è ancora passato a systemd . In questo caso, la risposta è la seguente.
EDIT:per systemd (Jessie o successivo), vedi in fondo .
Innanzitutto, puoi determinare quale sistema è attualmente in esecuzione tramite il comando:
sudo service --status-all
Otterrai un elenco simile a questo:
[ + ] triggerhappy
[ + ] udev
[ ? ] udev-mtab
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ - ] urandom
[ + ] vsftpd
[ + ] weewx
[ - ] x11-common
I + indicano i servizi in esecuzione, i - servizi non in esecuzione, i ?'s servizi che non consentono lo stato come possibile comando:sono per lo più comandi che non devono essere eseguiti sempre, solo occasionalmente.
Per tornare alla tua domanda, devi capire runlevel è in Linux. I runlevel (0-6 + S) identificano quali servizi possono/devono essere eseguiti. Una sequenza di avvio procede da un runlevel iniziale (specificato in /etc/inittab , nel mio Raspberry
# The default runlevel.
id:2:initdefault:
questa riga lo identifica come 2, quindi passa al runlevel finale standard della distribuzione (da 2 a 5). Identifichi il tuo attuale runlevel tramite il comando
# runlevel
N 2
(nel mio caso, un server headless). Gli altri runlevel sono (sempre da é/etc/inittab*):
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
L'utente singolo (1) è spesso identificato anche come S.
In un avvio normale, quindi inizi da 2 e avanzi fino a 5. Per trovare i servizi avviati in questa progressione, dai il comando:
# grep -nrI Default-Start /etc/init.d
umountroot:7:# Default-Start:
checkroot.sh:8:# Default-Start: S
kbd:6:# Default-Start: S
isc-dhcp-server:11:# Default-Start: 2 3 4 5
mountkernfs.sh:7:# Default-Start: S
hostname.sh:7:# Default-Start: S
mountnfs.sh:7:# Default-Start: S
halt:6:# Default-Start:
dphys-swapfile:20:# Default-Start: 2 3 4 5
bootlogs:7:# Default-Start: 1 2 3 4 5
rc.local:6:# Default-Start: 2 3 4 5
hostapd:9:# Default-Start: 2 3 4 5
keyboard-setup:8:# Default-Start: S
lightdm:7:# Default-Start: 2 3 4 5
procps:11:# Default-Start: S
mysql:9:# Default-Start: 2 3 4 5
single:6:# Default-Start: 1
vsftpd:7:# Default-Start: 2 3 4 5
samba:7:# Default-Start: 2 3 4 5
mountall.sh:6:# Default-Start: S
weewx:20:# Default-Start: 2 3 4 5
umountnfs.sh:7:# Default-Start:
triggerhappy:6:# Default-Start: 2 3 4 5
ifplugd:24:# Default-Start: 2 3 4 5
alsa-utils:9:# Default-Start: S
bootmisc.sh:7:# Default-Start: S
sendsigs:6:# Default-Start:
console-setup:7:# Default-Start: S
nfs-common:7:# Default-Start: 2 3 4 5 S
checkroot-bootclean.sh:6:# Default-Start: S
rsyslog:7:# Default-Start: 2 3 4 5
x11-common:7:# Default-Start: S
mountdevsubfs.sh:7:# Default-Start: S
cron:10:# Default-Start: 2 3 4 5
mountnfs-bootclean.sh:6:# Default-Start: S
mountall-bootclean.sh:6:# Default-Start: S
screen-cleanup:11:# Default-Start: S
udev:6:# Default-Start: S
ssh:7:# Default-Start: 2 3 4 5
haveged:8:# Default-Start: 2 3 4 5
hwclock.sh:26:# Default-Start: S
plymouth:9:# Default-Start: 2 3 4 5
motd:7:# Default-Start: 1 2 3 4 5
killprocs:6:# Default-Start: 1
networking:6:# Default-Start: S
fake-hwclock:9:# Default-Start: S
udev-mtab:6:# Default-Start: S
apache2:6:# Default-Start: 2 3 4 5
reboot:6:# Default-Start:
umountfs:6:# Default-Start:
plymouth-log:9:# Default-Start: S
openvpn:11:# Default-Start: 2 3 4 5
kmod:8:# Default-Start: S
ntp:7:# Default-Start: 2 3 4 5
rpcbind:9:# Default-Start: S 2 3 4 5
urandom:6:# Default-Start: S
rmnologin:6:# Default-Start: 2 3 4 5
checkfs.sh:7:# Default-Start: S
sudo:8:# Default-Start: 2 3 4 5
mtab.sh:6:# Default-Start: S
dbus:6:# Default-Start: 2 3 4 5
rsync:8:# Default-Start: 2 3 4 5
Questo stampa la riga che inizia con Default-Start in tutti i file in /etc/init.d/ , ovvero dove sono conservati i file che identificano i vari servizi. La riga in questione identifica il runlevel dove ogni servizio deve essere avviato. Se un servizio viene avviato al runlevel N, quando il sistema passa a N+1 non è necessario riavviarlo, ma se non è in esecuzione viene avviato.
Questo ti dà un'idea esatta delle diverse fasi in cui vengono avviati i servizi. Ma all'interno dello stesso runlevel, le righe Required-Start e Should-Start definiscono dipendenze hard e soft per il servizio in questione, i.e. servizi che devono correre e dovrebbe eseguito prima del servizio in esame. Senza i servizi Required-Start il servizio in questione fallirà, senza i servizi Should-Start invece non ci sarà alcun guasto generale, forse solo la mancanza di alcune funzionalità utili. Lo stesso accade allo stop con Required-Stop e Should-Stop.
SYSTEMD :
Il comando per elencare tutti i servizi è
systemctl list-unit-files
che sputerà molte informazioni. Selezionare tutti i servizi abilitati , cioè , quelli che vengono avviati all'avvio, basta grep il comando precedente come segue:
systemctl list-unit-files | grep enabled
Preferisco questo comando a systemctl list-units :la differenza è che questo mostrerà solo i servizi che il tuo sistema operativo ha in memoria =il sistema operativo pensa di aver bisogno), mentre systemctl list-unit-files visualizzerà tutto servizi installati, compresi quelli che sono mascherati (Cioè quelli che non dovrebbero mai essere avviati, nemmeno manualmente), e quelli che non lo faranno attivare, che sono chiamati statici . In altre parole, il comando che ho suggerito è più completo di quello che elenca solo attivo Servizi.
NB :systemd è molto diverso dai precedenti sistemi init. In particolare, non ha runlevel , ma target . runlevel esistono ancora per motivi di compatibilità e possono essere visti come obiettivi specifici elencando tutti gli obiettivi disponibili tramite
systemctl list-unit-files --type=target
mentre puoi vedere il tuo obiettivo attuale tramite
$ systemctl get-default
graphical.target
Per ulteriori informazioni, puoi leggere l'eccellente pagina introduttiva di DigitalOcean.
Per una semplice gestione del servizio di avvio su Raspberry Pi consiglio lo strumento rcconf
. Ti consente di attivare/disattivare facilmente i servizi in /etc/init.d/
. Puoi anche vedere se sono abilitati e verranno eseguiti all'avvio.
Per installare lo strumento
sudo apt-get install rcconf
Ed è molto semplice da usare con l'interfaccia utente di testo
sudo rcconf
sudo nano /etc/rc.local
Qui è dove inserisci il file batch o i comandi da eseguire all'avvio. Eseguo automaticamente Openvpn anche all'avvio :)