In Windows ho il gestore dei servizi, dove vedo tutti i servizi di sistema, che possono essere avviati tramite Windows stesso, ho configurato l'utente che utilizza, la gestione dei diritti è lì e posso passare variabili e altre informazioni ai servizi , posso nominarli e posso creare servizi duplicati di un programma e così via. Quindi ho uno strumento di gestione principale in Windows.
Come posso fare lo stesso in Linux? Come posso attivare l'esecuzione di "svnserve" all'avvio o come posso configurare i servizi per l'esecuzione in un contesto speciale. Come posso visualizzare tutti i servizi “programmati”?
Risposta accettata:
Attualmente ci sono 3 principali sistemi di init utilizzati da Linux. Alcuni anni fa ce n'era solo uno, SysVinit. Ma SysVinit mancava seriamente di funzionalità come la rappresentazione grafica delle dipendenze dai servizi, quindi è stato ormai deprecato nella maggior parte delle distribuzioni. Attualmente la maggior parte delle distribuzioni sta passando a systemd. Anche se c'è anche un parvenu.
Ma ecco la risposta alla tua domanda per ciascuno dei 3 sistemi init:
SysVinit
SysVinit attualmente utilizzato da Debian e RedHat. Anche se la prossima versione di RedHat (7) utilizzerà systemd.
Il modo universale per abilitare i servizi SysVinit all'avvio è collegarli simbolicamente in /etc/rc3.d
(o /etc/rc2.d
). Tutti i servizi possono essere trovati in /etc/init.d
. Si noti tuttavia che le distribuzioni avranno spesso il proprio strumento per la gestione di questi file e tale strumento dovrebbe essere utilizzato al suo posto. (Fedora/RedHat ha service
e chkconfig
, Ubuntu ha update-rc.d
)
Elenca servizi:
ls /etc/init.d/
Avvia servizio:
/etc/init.d/{SERVICENAME} start
o
service {SERVICENAME} start
Interrompi servizio:
/etc/init.d/{SERVICENAME} stop
o
service {SERVICENAME} stop
Abilita servizio:
cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}
(il S95
viene utilizzato per specificare l'ordine. S01 inizierà prima di S02, ecc.)
Disattiva servizio:
rm /etc/rc3.d/*{SERVICENAME}
Sistemato
La distribuzione più notevole che utilizza systemd è Fedora. Anche se è usato da molti altri. Inoltre, con Debian che ha scelto di utilizzare systemd su upstart, diventerà di fatto il sistema upstart per la maggior parte delle distribuzioni (ubuntu ha già annunciato che abbandonerà upstart per systemd).
Elenca servizi:
systemctl list-unit-files
Avvia servizio:
systemctl start {SERVICENAME}
Interrompi servizio:
systemctl stop {SERVICENAME}
Abilita servizio:
systemctl enable {SERVICENAME}
Disattiva servizio:
systemctl disable {SERVICENAME}
Ripartenza
Upstart è stato sviluppato dalla gente di Ubuntu. Ma dopo che Debian ha deciso di utilizzare systemd, Ubuntu ha annunciato che avrebbe abbandonato upstart.
Upstart è stato utilizzato brevemente anche da RedHat, poiché è presente in RHEL-6, ma non è comunemente usato.
Relazionato:In che modo la data di coreutil riesce a ottenere risultati così strani?Elenca servizi:
initctl list
Avvia servizio:
initctl start {SERVICENAME}
Interrompi servizio:
initctl stop {SERVICENAME}
Abilita servizio:
2 modi purtroppo:
-
Ci sarà un file
/etc/default/{SERVICENAME}
che contiene una rigaENABLED=...
. Modifica questa riga inENABLED=1
. -
Ci sarà un file
/etc/init/{SERVICENAME}.override
. Assicurati che contengastart
(o è del tutto assente), nonmanual
.
Disattiva servizio:
echo manual > /etc/init/{SERVICENAME}.override
Nota:esiste anche il sistema di inizializzazione 'OpenRC' utilizzato da Gentoo. Attualmente Gentoo è l'unica distribuzione che lo utilizza, e non è considerata per l'uso, né supportata da nessun'altra distribuzione. Quindi non sto coprendo il suo utilizzo (anche se se l'opinione è che lo faccio, posso aggiungerlo).