GNU/Linux >> Linux Esercitazione >  >> Linux

Come sapere quali servizi vengono eseguiti all'avvio su Raspberry Pi? (raspbian)

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 :)


Linux
  1. Come eseguire un comando che sopravviverà alla chiusura del terminale?

  2. CentOS / RHEL:come trovare quale utente esegue un comando specifico?

  3. Come eseguire servizi DNS e FTP in una prigione chroot

  4. Come posso sapere in Linux quale processo ha inviato un segnale al mio processo

  5. Come eseguire uno script di shell all'avvio

Come elencare i servizi di avvio all'avvio in Linux

Come eseguire i pod come servizi di sistema con Podman

Come installare il sistema operativo Raspbian su Raspberry Pi

Come installare il sistema operativo Raspbian di Raspberry Pi con Pixel Desktop su qualsiasi computer

Come eseguire uno script Bash

Come dire a Xargs quale argomento scegliere ??