Risposte:
La risposta rapida è: dipende dal init
sistema.
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 .
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
Per elencare tutti i servizi:
service --status-all
O:
# for init scripts:
ls /etc/init.d/
# for runlevel symlinks:
ls /etc/rc*.d/
Per elencare tutti i servizi:
systemctl list-unit-files --type=service
O:
ls /lib/systemd/system/*.service /etc/systemd/system/*.service
service --status-all
NON mostra se i servizi sono abilitati all'avvio, almeno non su Ubuntu 16. Mostra se i servizi sono attualmente in esecuzione o meno.
sudo service --status-all
ottenere tutti i servizi per mostrarmi. Alcuni sono stati nascosti quando ho eseguito solo service --status-all
su un account non root.
systemctl
, service
, initctl
...) in quanto sono generalmente considerati comandi di amministrazione del sistema.
Le directory /etc/init.d
e /etc/rc.*
sono state sostituite dallo upstart
strumento ' ' 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_6
per riflettere la versione di upstart che hai. Questo comando funziona sulla mia installazione lucida.
initctl list
è molto più bella di questo comando dbus. Vorrei lasciare questa risposta qui come riferimento (anziché eliminarla completamente).
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.
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
Per Ubuntu 18.04 usare:
systemctl list-units --type=service
invece di :
initctl
A partire da Ubuntu 16.04, initctl
è stato sostituito da systemd
.
https://www.linuxtricks.fr/wiki/systemd-les-commandes-essentielles (FR_fr)
(Se può aiutare @ sanjay-manohar)
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"
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