Často je potřeba dočasně nebo trvale povolit nebo zakázat služby v našem systému Ubuntu. Někdy můžeme vyžadovat, aby se určité služby spouštěly automaticky při startu, např. ssh nebo webové servery, a někdy můžeme potřebovat deaktivovat služby, které již nepotřebujeme a zatěžují CPU a RAM.
V tomto tutoriálu se podíváme na to, jak můžeme povolit a zakázat služby na Ubuntu. Abychom to mohli udělat, musíme nejprve pochopit, že existují 3 hlavní init systémy pro Ubuntu
- Systemd
- Počáteční
- SysV
Každý init systém má jiný způsob spouštění a zastavování služeb. Podíváme se na každý z nich.
Jak povolit a zakázat služby v Systemd init
Spuštění služby v systemd spusťte příkaz podle obrázku:
systemctl start service-name
Chcete-li například spustit webovou službu apache, spusťte
systemctl start apache2
Chcete-li ověřit, zda je služba spuštěna, spusťte
systemctl status apache2
Výstup
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2018-03-15 17:09:05 UTC; 35s ago
Docs: man:systemd-sysv-generator(8)
CGroup: /system.slice/apache2.service
├─2499 /usr/sbin/apache2 -k start
├─2502 /usr/sbin/apache2 -k start
└─2503 /usr/sbin/apache2 -k start
Mar 15 17:09:04 ip-172-31-41-251 systemd[1]: Starting LSB: Apache2 web server...
Mar 15 17:09:04 ip-172-31-41-251 apache2[2475]: * Starting Apache httpd web ser
Mar 15 17:09:05 ip-172-31-41-251 apache2[2475]: *
Mar 15 17:09:05 ip-172-31-41-251 systemd[1]: Started LSB: Apache2 web server.
Zastavení služby spuštěná služba
systemctl stop apache2
Chcete-li potvrdit, že služba není spuštěna, spusťte
systemctl status apache2
Výstup
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: inactive (dead) since Thu 2018-03-15 17:19:47 UTC; 12s ago
Docs: man:systemd-sysv-generator(8)
Process: 2822 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS
Process: 2687 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCE
Mar 15 17:10:11 ip-172-31-41-251 systemd[1]: Starting LSB: Apache2 web server...
Mar 15 17:10:11 ip-172-31-41-251 apache2[2687]: * Starting Apache httpd web ser
Mar 15 17:10:12 ip-172-31-41-251 apache2[2687]: *
Mar 15 17:10:12 ip-172-31-41-251 systemd[1]: Started LSB: Apache2 web server.
Mar 15 17:19:46 ip-172-31-41-251 systemd[1]: Stopping LSB: Apache2 web server...
Mar 15 17:19:46 ip-172-31-41-251 apache2[2822]: * Stopping Apache httpd web ser
Mar 15 17:19:47 ip-172-31-41-251 apache2[2822]: *
Mar 15 17:19:47 ip-172-31-41-251 systemd[1]: Stopped LSB: Apache2 web server.
Chcete-li povolit službu apache2 při spouštění, spusťte
systemctl enable apache2
Chcete-li zakázat službu apache2 při spouštění, spusťte
systemctl disable apache2
Restartování služby
systemctl restart apache2
Chcete-li zkontrolovat, zda je služba aktuálně nakonfigurována pro spuštění při příštím spuštění
systemctl is-enabled apache2
Výstup
Executing /lib/systemd/systemd-sysv-install is-enabled apache2
enabled
Chcete-li zkontrolovat, zda je služba aktivní
systemctl is-active apache2
Výstup
active
Jak úplně odebrat služby Systemd
Co kdybyste nainstalovali balíček a později se rozhodli, že jej již nepotřebujete. Jak ho úplně odstranit? Postupujte podle níže uvedených příkazů.
Nejprve zastavte službu
systemctl stop service-name
Poté službu deaktivujte
systemctl disable service-name
Odebrání služby v systemd
rm /etc/systemd/system/service-name
rm /etc/systemd/system/service-name/[related symlinks]
Znovu načíst systemd
systemctl daemon-reload
Konečně běžte,
systemctl reset-failed
Jak povolit a zakázat služby v Upstart init
Upstart init system byl odhalen těsně před systemd Byl použit v Ubuntu 9.10 až Ubuntu 14.10. Později byl vyřazen, čímž se připravila cesta pro systemd init v Ubuntu 15.04 a novějších verzích. V tomto příkladu se podíváme, jak můžeme spustit a zastavit, povolit a zakázat služby v Ubuntu 14.04.
Upstart využívá konfigurační soubory pro řízení služeb. Tyto soubory jsou uloženy v adresáři /etc/init. Tyto soubory se skládají z sekcí prostého textu uspořádaných do stanz a každá stanza popisuje službu a jak funguje.
Kontrola, zda je služba spuštěna nebo ne spusťte níže uvedený příkaz
initctl status service-name
NEBO
service service-name status
NEBO
status service-name
V tomto příkladu zkontrolujeme stav cups, linuxového tiskového serveru.
initctl status cups
NEBO
service cups status
NEBO
status cups
Výstup
cups start/running, process 3029
Chcete-li službu zastavit, spusťte níže uvedený příkaz
initctl stop cups
NEBO
service cups stop
NEBO
stop cups
Výstup
cups stop/waiting
Povolení služby v Upstart init
V souboru /etc/init/*.conf najdete "respawn " direktiva, která skokově spustí službu, pokud neočekávaně spadne nebo se systém restartuje. Ve výchozím nastavení je normálně povolena.
Například v souboru /etc/init/cups.conf níže,
první argument (3) je počet pokusů o restart a druhý argument (12) je časový interval mezi opakováními. Pokud se nepodaří automaticky restartovat. bude udržován v zastaveném stavu.
Deaktivace služby v úvodní inicializaci
spusťte níže uvedený příkaz
echo manual >> /etc/init/service.override
Tím se vytvoří přepisovací soubor, který zakáže službu, aniž by se vůbec změnila definice úlohy.
Pro podávání pohárů bude příkaz
echo manual >> /etc/init/cups.override
Po restartu systému budou kelímky v zastaveném stavu. Pokud chcete službu znovu povolit, musíte smazat soubor /etc/init/cups.override.
Nástroj Sysv-rc-conf
Toto je textová konzole, která vám poskytuje přehled o různých úrovních služeb a běhu, jejichž spuštění je naplánováno. Lze jej nainstalovat pomocí následujícího příkazu
apt-get install sysv-rc-conf
Chcete-li nástroj spustit, spusťte
sysv-rc-conf
Nástroj Jobs-Admin
Toto je další funkce, která vám umožňuje řídit služby a procesy v prostředí GUI. Můžete to nainstalovat spuštěním.
apt-get install jobs-admin
Jak povolit a zakázat služby v SysV init
Chcete-li povolit službu v inicializaci SysV, spusťte
update-rc.d enable service-name
Pokud například chcete povolit webový server apache, spustili byste
update-rc.d enable apache2
Chcete-li službu zakázat, spusťte
update-rc.d disable service-name
Například
update-rc.d disable apache2
Téměř všechny systémy Linux běží na Systemd init From Ubuntu, Debian, RHEL a CentOS. Zjistíte tedy, že ke spuštění, zastavení, povolení a zakázání služeb budete více používat příkaz systemctl. Vítáme vás, abyste si vyzkoušeli příkazy uvedené v tomto článku. Děkuji.
Přečtěte si také:
- Příkazy Systemctl pro správu služby Systemd v systému Linux