Come elencare i servizi / demoni avviati all'avvio _e_ controllare il loro ordine di caricamento


32

Voglio essere sicuro in quale ordine vengono avviati i servizi durante il processo di avvio nei sistemi basati su Debian (in particolare Debian Squeeze).

Grazie in anticipo.

Risposte:


37

In breve:

ls /etc/rc*.d

Questo ti mostra cosa inizia a quale runlevel e all'interno di ogni livello l'ordine è determinato dal numero dopo la lettera (K è Kill, S è inizio).

Puoi configurare ciò che inizia ad ogni runlevel con sysv-rc-conf, che è installabile con apt.

ad es. sul mio sistema apache2 è collegato simbolicamente in rc5.d come "S20apache2". Un collegamento nella stessa directory con S19 sarebbe iniziato prima di esso, qualcosa con S21 sarebbe iniziato dopo di esso.

Ulteriori letture:


Grazie mille ma devo essere sicuro che ad esempio il peperoncino viene avviato prima di bind9 ma entrambi hanno il prefisso S21. Ho modificato particolari / etc / init / files Required-Start: e Required-Stop: sezione e ho eseguito update-rc.d per loro. Qualche idea su cosa potrebbe andare storto?
user155872

Probabilmente vuoi insserv piuttosto che update-rc.d. Chili è un'app su misura o nel repository Debian? Se è un pacchetto Debian fatto correttamente, non dovresti aver bisogno di modificare il suo script init, ma se è su misura prova X-Start-Before piuttosto che Required-Start (e poi abilita con insserv). Link: wiki.debian.org/LSBInitScripts
Alex Forbes

Ok grazie. Ho imparato insserv e un'altra cosa: "simbolo del dollaro, perché sono strutture virtuali predefinite. Altrimenti, dovrebbero essere usati i nomi degli script di avvio di System V, che si trovano in /etc/init.d/, anche se senza un dollaro segno o possibile estensione .sh. " E ora i prefissi sono corretti. Grazie :)
user155872

19

Le utility rcconf e sysv-rc-conf potrebbero aiutare?

# aptitude install rcconf sysv-rc-conf

Successivamente è possibile eseguirli digitando rcconfo sysv-rc-conf.

rcconf sysv-rc-conf


9

Puoi elencare tutti i servizi e il loro stato con questo semplice comando:

service --status-all

Dal manuale:

service --status-all esegue tutti gli script init, in ordine alfabetico, con il comando status . Lo stato è [+] per i servizi in esecuzione, [-] per i servizi arrestati e [? ] per servizi senza un comando "status". Questa opzione chiama lo stato solo per i lavori sysvinit; i lavori di avvio possono essere interrogati in modo simile con l'elenco initctl.


1
Non penso che questo affronti la parte "quale ordine" della domanda.
kmarsh

2
e anche questo non dice quale sia abilitato (avvia all'avvio)
kiltek,

Ho degli script che appaiono in questo comando, ma non sono stati avviati.
Gufo

4
for i in `find /etc/rc*.d -name S*`; do basename $i | sed -r 's/^S[0-9]+//'; done | sort | uniq

Sample output:

acpid
anacron
avahi-daemon
boa
bootlogd
bootlogs
bootmisc.sh
checkfs.sh
checkroot-bootclean.sh
checkroot.sh
cryptdisks
cryptdisks-early
dbus
delayed-services
hostname.sh
hwclock.sh
keyboard-setup
killprocs
kmod
lightdm
mountall-bootclean.sh
mountall.sh
mountdevsubfs.sh
mountkernfs.sh
mountnfs-bootclean.sh
mountnfs.sh
mtab.sh
pppd-dns
procps
qemu-kvm
rc.local
rmnologin
rsyslog
single
sleep
stop-bootlogd
stop-bootlogd-single
udev
udev-mtab
x11-common

1

Su Debian rcconf dovrebbe fare il trucco, solo per configurare l'arresto / avvio dei servizi già presenti.

Lo uso sempre su Debian Jessie e Wheezy.


Potresti spiegare un po 'di più come utilizzare lo strumento che hai citato?
womble
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.