Attualmente ci sono 3 principali sistemi di init utilizzati da Linux. Alcuni anni fa, ce n'era solo uno, SysVinit. Ma SysVinit era gravemente carente di funzionalità come la rappresentazione grafica delle dipendenze del servizio, quindi ormai è stato deprecato nella maggior parte delle distribuzioni. Attualmente la maggior parte delle distro sta passando a systemd . Anche se c'è anche l' inizio .
Ma ecco la risposta alla tua domanda per ciascuno dei 3 sistemi init:
SysVinit
SysVinit attualmente utilizzato da Debian e RedHat. Sebbene la prossima versione di RedHat (7) utilizzerà systemd.
Il modo universale di abilitare i servizi SysVinit all'avvio è di collegarli simbolicamente in /etc/rc3.d
(o /etc/rc2.d
). Tutti i servizi sono disponibili in /etc/init.d
. Si noti tuttavia che le distro avranno spesso un proprio strumento per la gestione di questi file e che invece dovrebbe essere utilizzato. (Fedora / RedHat ha service
e chkconfig
, ubuntu ha update-rc.d
)
Elenco servizi:
ls /etc/init.d/
Inizia il servizio:
/etc/init.d/{SERVICENAME} start
o
service {SERVICENAME} start
Interrompere il servizio:
/etc/init.d/{SERVICENAME} stop
o
service {SERVICENAME} stop
Abilita servizio:
cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}
( S95
viene usato per specificare l'ordine. S01 inizierà prima di S02, ecc.)
Disabilita il servizio:
rm /etc/rc3.d/*{SERVICENAME}
systemd
La distribuzione più notevole che utilizza systemd è Fedora. Sebbene sia usato da molti altri. Inoltre, con Debian che ha scelto di iniziare con systemd all'inizio, diventerà il sistema defacto upstart per la maggior parte delle distribuzioni (Ubuntu ha già annunciato che lascerà l'avvio per systemd).
Elenco servizi:
systemctl list-unit-files
Inizia il servizio:
systemctl start {SERVICENAME}
Interrompere il servizio:
systemctl stop {SERVICENAME}
Abilita servizio:
systemctl enable {SERVICENAME}
Disabilita il servizio:
systemctl disable {SERVICENAME}
parvenu
Upstart è stato sviluppato dalla gente di Ubuntu. Ma dopo che Debian ha deciso di andare con systemd , Ubuntu ha annunciato che sarebbe ricominciato .
Anche Upstart è stato usato brevemente da RedHat, poiché è presente in RHEL-6, ma non è comunemente usato.
Elenco servizi:
initctl list
Inizia il servizio:
initctl start {SERVICENAME}
Interrompere il servizio:
initctl stop {SERVICENAME}
Abilita servizio:
2 modi sfortunatamente:
Ci sarà un file /etc/default/{SERVICENAME}
che contiene una linea ENABLED=...
. Cambia questa riga in ENABLED=1
.
Ci sarà un file /etc/init/{SERVICENAME}.override
. Assicurati che contenga start
(o sia del tutto assente), no manual
.
Disabilita il servizio:
echo manual > /etc/init/{SERVICENAME}.override
Nota: esiste anche il sistema di inizializzazione 'OpenRC' utilizzato da Gentoo. Attualmente Gentoo è l'unica distro che la utilizza e non viene considerata per l'uso né supportata da altre distro. Quindi non sto coprendo il suo utilizzo (anche se se l'opinione è che lo faccio, posso aggiungerlo).