Come verificare se un servizio è stato avviato da startstart o sysvinit?


Risposte:


1

Puoi avere due set di script, ma hai solo un sistema init attivo. Su Ubuntu 14.04 è Upstart.

Quindi, indipendentemente dal fatto che lo script sia sotto /etc/init.do /etc/init, la risposta per cui il sistema init esegue lo script in Ubuntu 14.04 è sempre Upstart.

Puoi vedere cosa succede quando provi a eseguire uno /etc/init.dscript usando straceper registrare le chiamate di sistema a STDOUT:

 sudo strace /etc/init.d/bluetooth start

Per prima cosa vedrai che lo script init carica prima alcune funzioni di intestazione /lib/lsb/init-functions

open("/lib/lsb/init-functions", O_RDONLY) = 3

Molto presto vedrai l'attività deviata su uno script correlato a Upstart:

open("/lib/lsb/init-functions.d/01-upstart-lsb", O_RDONLY) = 3

Questo è solo uno script di shell, quindi puoi aprirlo e leggere la fonte per vedere cosa fa.

Mentre continui a completare l'output, penso che vedrai che il comando viene reindirizzato per avviare lo script utilizzando lo script Upstart invece dello script init SysV.

La cosa interessante da vedere è che il 16.04 Upstart reindirizza ulteriormente il controllo su systemd e viene invece avviato il relativo servizio systemd:

write(1, "Starting bluetooth (via systemct"..., 53Starting bluetooth (via systemctl): bluetooth.service) = 53

I consigli di base per utilizzare gli script Upstart e i comandi di gestione del servizio su Ubuntu 14.04 per evitare la complessità e la potenziale confusione del livello di compatibilità SysV init. Allo stesso modo, una volta eseguito l'aggiornamento a 16.04, iniziare a utilizzare i systemdfile e il systemctlcomando nativi di unità per evitare livelli di compatibilità non necessari.

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.