Obecnie istnieją 3 główne systemy inicjujące używane przez Linuksa. Kilka lat temu był tylko jeden, SysVinit. Ale SysVinit poważnie brakowało takich możliwości, jak wykres zależności zależności od usług, więc do tej pory był on przestarzały w większości dystrybucji. Obecnie większość dystrybucji przechodzi na systemd . Chociaż jest też dobry początek .
Ale oto odpowiedź na twoje pytanie dla każdego z 3 systemów inicjujących:
SysVinit
SysVinit jest obecnie używany przez Debian i RedHat. Chociaż następna wersja RedHat (7) będzie używać systemd.
Uniwersalny sposób włączania usług SysVinit podczas rozruchu polega na ich dowiązaniu symbolicznym w /etc/rc3.d
(lub /etc/rc2.d
). Wszystkie usługi można znaleźć w /etc/init.d
. Należy jednak pamiętać, że dystrybucje często mają własne narzędzie do zarządzania tymi plikami, a zamiast tego należy użyć tego narzędzia. (Fedora / RedHat ma service
i chkconfig
Ubuntu ma update-rc.d
)
Lista usług:
ls /etc/init.d/
Uruchomić usługę:
/etc/init.d/{SERVICENAME} start
lub
service {SERVICENAME} start
Zatrzymaj usługę:
/etc/init.d/{SERVICENAME} stop
lub
service {SERVICENAME} stop
Włącz usługę:
cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}
( S95
służy do określenia kolejności. S01 uruchomi się przed S02 itp.)
Wyłącz usługę:
rm /etc/rc3.d/*{SERVICENAME}
Systemd
Najbardziej zauważalną dystrybucją używającą systemd jest Fedora. Chociaż jest używany przez wiele innych. Dodatkowo, z uwagi na to, że Debian zdecydował się na systemd over upstart, stanie się defacto systemem upstart dla większości dystrybucji (ubuntu już zapowiedziało, że będzie upstart dla systemd).
Lista usług:
systemctl list-unit-files
Uruchomić usługę:
systemctl start {SERVICENAME}
Zatrzymaj usługę:
systemctl stop {SERVICENAME}
Włącz usługę:
systemctl enable {SERVICENAME}
Wyłącz usługę:
systemctl disable {SERVICENAME}
Dorobkiewicz
Upstart został opracowany przez ludzi z Ubuntu. Ale kiedy Debian zdecydował się na systemd , Ubuntu ogłosiło, że porzuci start .
UpHart był również krótko używany przez RedHat, ponieważ jest obecny w RHEL-6, ale nie jest powszechnie używany.
Lista usług:
initctl list
Uruchomić usługę:
initctl start {SERVICENAME}
Zatrzymaj usługę:
initctl stop {SERVICENAME}
Włącz usługę:
Niestety 2 sposoby:
Będzie plik /etc/default/{SERVICENAME}
zawierający linię ENABLED=...
. Zmień tę linię na ENABLED=1
.
Będzie plik /etc/init/{SERVICENAME}.override
. Upewnij się, że zawiera start
(lub jest całkowicie nieobecny), a nie manual
.
Wyłącz usługę:
echo manual > /etc/init/{SERVICENAME}.override
Uwaga: Istnieje również system inicjujący „OpenRC”, z którego korzysta Gentoo. Obecnie Gentoo jest jedyną dystrybucją, która z niego korzysta, i nie jest rozważana do użytku ani obsługiwana przez żadną inną dystrybucję. Więc nie omawiam jego użycia (choć jeśli tak, to mogę to dodać).