Ve Windows mám správce služeb, kde vidím všechny systémové služby, které lze spustit přes samotný Windows, nastavím uživatele, kterého používá, je tam správa práv a mohu službám předávat proměnné a některé další informace. , mohu je pojmenovat a mohu vytvořit duplikáty služeb jednoho programu a tak dále. Takže mám hlavní nástroj pro správu ve Windows.
Jak mohu udělat totéž v Linuxu? Jak mohu spustit spuštění „svnserve“ při spuštění nebo jak mohu nakonfigurovat služby tak, aby byly spuštěny ve speciálním kontextu. Jak mohu zobrazit všechny „naprogramované“ služby?
Přijatá odpověď:
V současné době linux používá 3 hlavní init systémy. Před několika lety existoval pouze jeden, SysVinit. SysVinit však vážně postrádal funkce, jako je graf závislosti služeb, takže je ve většině distribucí již zastaralý. V současné době většina distribucí přechází na systemd. I když je tu také nováček.
Ale zde je odpověď na vaši otázku pro každý ze 3 init systémů:
SysVinit
SysVinit v současnosti používají Debian a RedHat. I když příští verze RedHat (7) bude používat systemd.
Univerzální způsob, jak povolit služby SysVinit při spouštění, je jejich symbolické propojení v /etc/rc3.d
(nebo /etc/rc2.d
). Všechny služby lze nalézt v /etc/init.d
. Pamatujte však, že distribuce budou mít často svůj vlastní nástroj pro správu těchto souborů a tento nástroj by měl být použit místo něj. (Fedora/RedHat má service
a chkconfig
, ubuntu má update-rc.d
)
Seznam služeb:
ls /etc/init.d/
Spustit službu:
/etc/init.d/{SERVICENAME} start
nebo
service {SERVICENAME} start
Zastavit službu:
/etc/init.d/{SERVICENAME} stop
nebo
service {SERVICENAME} stop
Povolit službu:
cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}
(S95
slouží k upřesnění objednávky. S01 začne před S02 atd.)
Zakázat službu:
rm /etc/rc3.d/*{SERVICENAME}
Systemd
Nejpozoruhodnější distribucí využívající systemd je Fedora. I když to používá mnoho dalších. Navíc, když se Debian rozhodl přejít s systemd před upstart, stane se defacto upstart systémem pro většinu distribucí (ubuntu již oznámilo, že upstart pro systemd ukončí).
Seznam služeb:
systemctl list-unit-files
Spustit službu:
systemctl start {SERVICENAME}
Zastavit službu:
systemctl stop {SERVICENAME}
Povolit službu:
systemctl enable {SERVICENAME}
Zakázat službu:
systemctl disable {SERVICENAME}
Počáteční
Upstart byl vyvinut lidmi z Ubuntu. Ale poté, co se debian rozhodl přejít na systemd, Ubuntu oznámilo, že přestanou začínat.
Upstart byl také krátce používán společností RedHat, protože je přítomen v RHEL-6, ale není běžně používán.
Související:Jak dokáže datum coreutilu získat tak podivné výsledky?Seznam služeb:
initctl list
Spustit službu:
initctl start {SERVICENAME}
Zastavit službu:
initctl stop {SERVICENAME}
Povolit službu:
Bohužel 2 způsoby:
-
Bude zde soubor
/etc/default/{SERVICENAME}
který obsahuje řádekENABLED=...
. Změňte tento řádek naENABLED=1
. -
Bude zde soubor
/etc/init/{SERVICENAME}.override
. Ujistěte se, že obsahujestart
(nebo chybí úplně), nikolimanual
.
Zakázat službu:
echo manual > /etc/init/{SERVICENAME}.override
Poznámka:Existuje také init systém ‚OpenRC‘, který používá Gentoo. V současné době je Gentoo jedinou distribucí, která ji používá, a o jejím použití se neuvažuje ani ji nepodporuje žádná jiná distribuce. Takže neuvádím jeho použití (i když pokud je názor, že ano, mohu jej přidat).