Come dire quali servizi vengono eseguiti all'avvio su Raspberry Pi? (Raspbian)


17

Ho alcuni servizi che vengono eseguiti all'avvio ma in realtà ho dimenticato come li ho configurati! Se voglio cambiare la loro attività come potrei farlo? Ad esempio, forse desidero disabilitare l'avvio di un servizio o forse desidero avviarlo utilizzando un metodo diverso.

In particolare, ho un servizio openvpn che funziona correttamente all'avvio, ma alcuni tutorial dicono che dovrei legare il servizio dei programmi di condivisione file alla VPN stessa in modo che se la VPN si interrompe, lo stesso vale per il servizio di condivisione file. Ma penso che forse l'autorunning del mio VPN stia complicando le cose e dovrei disabilitarlo o modificare il modo in cui si avvia. Ma come controllare?

Risposte:


23

Suppongo che tu abbia un Raspberry usando raspian, che, per quanto ne so, non è ancora passato a systemd . In questo caso, la risposta è la seguente.

EDIT: per systemd (Jessie o successivo), vedere in fondo .

Innanzitutto, è possibile determinare quale sistema è attualmente in esecuzione mediante il comando:

  sudo service --status-all

Otterrai un elenco un po 'come questo:

  [ + ]  triggerhappy
  [ + ]  udev
  [ ? ]  udev-mtab
  [ ? ]  umountfs
  [ ? ]  umountnfs.sh
  [ ? ]  umountroot
  [ - ]  urandom
  [ + ]  vsftpd
  [ + ]  weewx
  [ - ]  x11-common

I + 's indicano i servizi in esecuzione, i -'s servizi non in esecuzione, i ?' S servizi che non permettono lo stato come un possibile comando: sono per lo più i comandi che non hanno bisogno di correre per tutto il tempo, solo di tanto in tanto.

Per tornare alla tua domanda, devi capire i 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 tua distro (da 2 a 5). Identifica il tuo runlevel corrente tramite il comando

 # runlevel
 N 2

(nel mio caso, un server senza testa). 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) viene spesso identificato come S.

In un avvio normale, quindi inizi da 2 e avanzi fino a 5. Per trovare i servizi avviati in questa progressione, emetti 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/ , dove sono conservati i file che identificano i vari servizi. La riga in questione identifica il runlevel in cui 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 viene rilevato che non è in esecuzione viene avviato.

Questo ti dà un'idea esatta delle diverse fasi in cui vengono avviati i servizi. Ma nello stesso runlevel, le righe Required-Start e Should-Start definiscono dipendenze complesse per il servizio in questione, ovvero i servizi che devono essere eseguiti e devono essere eseguiti prima dell'esame del servizio. Senza i servizi di avvio richiesto, il servizio in questione fallirà, senza i servizi di avvio dovrebbe invece verificarsi un errore generale, probabilmente 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. Per selezionare tutti i servizi abilitati , ovvero quelli che vengono avviati all'avvio, basta eseguire il comando sopra riportato 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 OS ha in memoria = il SO pensa di aver bisogno), mentre systemctl list-unit-files mostrerà tutti i servizi installati, inclusi quelli che sono mascherato ( cioè quelle che dovrebbero mai essere avviato, neppure manualmente), e quelle che si non attiva, che sono chiamati statica . In altre parole, il comando che ho suggerito è più completo di quello che elenca solo i servizi attivi .

NB : systemd è molto diverso dai precedenti sistemi init. In particolare, non ha runlevel , ma target . i runlevel esistono ancora per motivi di compatibilità e possono essere visti come target specifici elencando tutti i target disponibili tramite

systemctl list-unit-files --type=target

mentre puoi vedere il tuo obiettivo attuale per mezzo di

$ systemctl get-default
  graphical.target

Per ulteriori informazioni, puoi leggere l'eccellente pagina introduttiva di DigitalOcean .


Raspbian Jessie usa systemd, ma questa risposta sembra ancora funzionare.
ZX9

1
@ ZX9 Grazie per aver richiamato la mia attenzione su questo vecchio post, ho aggiunto una modifica per systemd .
MariusMatutiae,

8

Per una semplice gestione del servizio di avvio su Raspberry Pi consiglio lo strumento rcconf. Ti consente di attivare / disattivare facilmente i servizi /etc/init.d/. Puoi anche vedere se sono abilitati e funzioneranno all'avvio.

Per installare lo strumento

sudo apt-get install rcconf

Ed è molto semplice usarlo con l'interfaccia utente del testo

sudo rcconf

Questo non risponde all'OP, che era (e cito): come dire quali servizi vengono eseguiti all'avvio su Raspberry Pi? (raspbian) .
MariusMatutiae,

@MariusMatutiae Lo fa, poiché rcconfti dice se un servizio è abilitato o meno. Ho modificato la risposta per dire esplicitamente che lo strumento mostra questo particolare tipo di informazioni.
jjurm,

3
sudo nano /etc/rc.local

Qui è dove si inseriscono file batch o comandi da eseguire all'avvio. Avvio automaticamente anche Openvpn all'avvio :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.