Comando per elencare i servizi che iniziano all'avvio?


144

Esiste un comando per elencare i servizi eseguiti all'avvio? Immagino che implicherebbe l'analisi /etc/init.d/e le varie /etc/rc.*directory.

Risposte:


104

Puoi semplicemente usare il initctl listcomando shell per elencare il contenuto /etc/initpiuttosto che il dbus-sendcomando suggerito .


2
Funziona con Ubuntu 18.04? Ottengo "initctl: comando non trovato" (in bash)
Sanjay Manohar

121

La risposta rapida è: dipende dal initsistema.

La risposta lunga è: per le versioni attuali di Ubuntu, probabilmente hai un mix di Upstart e SystemV . Le versioni più recenti di Ubuntu dopo il 15.04 "Vivid Vervet" (e altre distro Linux come RHEL / CentOS 7) si stanno muovendo per usare SystemD .

parvenu

Per elencare tutti i servizi:

initctl list

Per elencare tutti i servizi Upstart ed eseguirli initctl show-config, questo one-liner può essere utile:

initctl list | awk '{ print $1 }' | xargs -n1 initctl show-config

Sistema V

Per elencare tutti i servizi:

service --status-all

O:

# for init scripts:
ls /etc/init.d/

# for runlevel symlinks:
ls /etc/rc*.d/

systemd

Per elencare tutti i servizi:

systemctl list-unit-files --type=service

O:

ls /lib/systemd/system/*.service /etc/systemd/system/*.service

9
Questa dovrebbe essere la risposta accettata.
sjas,

service --status-allNON mostra se i servizi sono abilitati all'avvio, almeno non su Ubuntu 16. Mostra se i servizi sono attualmente in esecuzione o meno.
Wildcard il

1
Ho dovuto sudo service --status-allottenere tutti i servizi per mostrarmi. Alcuni sono stati nascosti quando ho eseguito solo service --status-allsu un account non root.
Completo

@Plucious: grazie per averlo menzionato. Ho pensato che era ben noto che questi comandi vengono generalmente eseguiti come root ( systemctl, service, initctl...) in quanto sono generalmente considerati comandi di amministrazione del sistema.
TrinitronX,

13

Le directory /etc/init.de /etc/rc.*sono state sostituite dallo upstartstrumento ' ' init. Sebbene gli script in queste directory vengano eseguiti come previsto, il nuovo metodo per eseguire cose su init è definito dai file in/etc/init/

È possibile elencare tutti i lavori di avvio con una query di avvio su dbus:

dbus-send --print-reply --system --dest=com.ubuntu.Upstart \
        /com/ubuntu/Upstart com.ubuntu.Upstart0_6.GetAllJobs

Potrebbe essere necessario modificare 0_6per riflettere la versione di upstart che hai. Questo comando funziona sulla mia installazione lucida.


3
@Eric H: potresti impostare la risposta di seguito come corretta invece - initctl listè molto più bella di questo comando dbus. Vorrei lasciare questa risposta qui come riferimento (anziché eliminarla completamente).
Jeremy Kerr,

12

Se vuoi una buona rappresentazione grafica dei servizi e del tempo necessario per l'avvio, prova:

apt-get install bootchart

11

Id us initctl show-config <servicename>per ottenere davvero i dettagli di quando / se il servizio verrà avviato durante l'avvio.

Così:

$ initctl show-config myservice
myservice
  start on runlevel [2345]
  stop on runlevel [!2345]

O per demone idmap NFS4:

$ initctl show-config idmapd
idmapd
  start on (local-filesystems or mounting TYPE=nfs4)
  stop on runlevel [06]

chkconfig è preferibile solo su sistemi basati su RedHat imho.


1
Questa è la risposta corretta Non ho idea del perché tutte le risposte sbagliate e incomplete siano così altamente votate.
Cerin,

1
Questo non funziona per le persone che usano SysV, sono d'accordo che sia una buona risposta ma è incompleta.
Gabriel Netto,

9

Il 12.04 potremmo usare:

sudo apt-get install chkconfig
chkconfig --list

ma è stato rimosso in 12.10 .

Uscita campione:

acpi-support              0:off  1:off  2:on   3:on   4:on   5:on   6:off
acpid                     0:off  1:off  2:off  3:off  4:off  5:off  6:off
apparmor                  0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on

2
Non funziona in Ubuntu. pacchetti.ubuntu.com/…
AB

@AB grazie per avermelo fatto notare! Oggigiorno è raro che i downvoter commentino: richiede coraggio e mi permette di imparare. aggiornato con la versione in cui funziona.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件



0

Oltre ai servizi di sistema e agli script in:

/etc/init.d/
/ lib / systemd / system /
/ etc / systemd / system /

Probabilmente ci sono anche applicazioni AutoStart , ad esempio:

find / -name "*autostart*"

ls -1 "/etc/xdg/autostart" "/home/$USER/.config/autostart" "/usr/share/gdm/autostart"  "/usr/share/gnome/autostart"

-2

Usando gawk:

ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}'

Uscita campione:

$ ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}' | egrep README
README 0,1,2,3,4,5,6,S
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.