Ubuntu utilizza al Upstart
posto del init
sistema tradizionale . Upstart è più forte di init, ma è un po 'più complicato di init
.
Upstart, al contrario, è basato sugli eventi. Un "evento" può essere qualcosa di simile al "boot" ... o può essere molto più specifico, come "la rete è pronta per essere utilizzata ora". È possibile specificare quali script dipendono da quali eventi. Tutto ciò che non è in attesa di un evento può essere eseguito ogni volta che è disponibile la CPU.
Questo sistema basato su eventi ha un altro vantaggio: teoricamente puoi usarlo anche dopo che il sistema è attivo e funzionante. Upstart è infine programmato per assumere compiti come o collegare dispositivi esterni come chiavette USB (attualmente gestiti da udev e hal) o eseguire programmi in orari specifici (attualmente gestiti da cron).
Come dovresti sapere ora, un demone morto (che non viene eseguito all'avvio) potrebbe essere vivo e si avvia a causa di un evento.
Ubuntu ha sia / etc / init, per Upstart, e /etc/init.d, per i vecchi file SysV. Alcuni dei file in esso contenuti sono normali script SysV Init che non sono ancora stati migrati. Ma alcuni servizi migrati mantengono un collegamento da /etc/init.d a / lib / init / upstart-job. Se esegui uno di questi, funziona, ma stampa prima un avviso:
Invece di invocare gli script di init tramite /etc/init.d, utilizzare l'utilità di servizio (8), ad es service mysql restart
Poiché lo script che si sta tentando di invocare è stato convertito in un processo Upstart, è possibile utilizzare anche l'utilità restart (8), ad esempio restart mysql.
Su una macchina Upstart, init viene avviato. Invece di eseguire uno script rc master che chiama gli script per un runlevel specifico, l'iniz di Upstart prende i lavori dalla sua directory dei lavori.
Ora sappiamo che non esiste un modo semplice per elencare i daemon di avvio automatico, dovresti elencare tutti i daemon e controllarli uno per uno. Il demone può essere avviato da init
o da upstart
o anche da un evento successivo.
Il modo più semplice per ottenere questo elenco è eseguire questo comando nella shell:
initctl show-config
L'output è simile al seguente:
...
hostname
start on startup
udevtrigger
start on ((startup and started udev) and not-container)
tty2
start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...
Alcuni elementi come il primo è così semplice, hostname
inizia all'avvio. Ma altri elementi possono sembrare più complicati. (Ma per fortuna leggibile dall'uomo :-))
chkconfig --list
che funzionerà giusto?on
significa che il servizio è in esecuzione su quel runlevel e quel servizio si avvierà automaticamente all'avvio del sistema.