it-swarm.dev

Jak povolit nebo zakázat služby?

Četl jsem o tom, jak povolit a zakázat služby v Ubuntu a zdá se, že existují různé možnosti jejich správy.

První metoda, kterou jsem našel, je update-rc.d přidat nové služby ke spuštění, které se zaměřuje na /etc/init.dsložka a její obsah.

Druhý, který jsem našel, je upravit .conf soubory v /etc/init složka.

Jaký je doporučený způsob, jak povolit/zakázat/přidat služby a proč?

Mohli byste uvést krátký neprůstřelný krok za krokem příklad, jak přidat službu v Ubuntu a povolit a zakázat ji?

845
NES

Existují služby, které lze povolit/zakázat pomocí GUI (například aplikace startup) nebo terminálu.

Pro Terminál máte několik možností. Nejprve otevřete terminál (například zadejte do terminálu „terminál“ a otevřete jej). Pak:

Dočasné povolení/zakázání služeb

Chcete-li dočasně zastavit a spustit služby (nepovoluje/nezakazuje je pro budoucí spouštění), můžete zadat service SERVICE_NAME [action]. Například:

  • Sudo service Apache2 stop (Zastaví ZASTAVÍ službu Apache, dokud se restartuje nebo dokud ji znovu nespustíte).

  • Sudo service Apache2 start (Začne SPUSTÍ službu Apache za předpokladu, že byla dříve zastavena.).

  • service Apache2 status (Sdělí vám STATUS služby, pokud je povoleno/spuštěno zakázáno/NEBUDE spuštěno.).

  • Sudo service Apache2 restart (Bude RESTARTOVAT službu. Nejčastěji se používá, když jste změnili, konfigurační soubor. V tomto případě, pokud jste změnili buď konfigurace PHP nebo konfigurace Apache. Restart vás ušetří od zastavení/spuštění pomocí 2 příkazových řádků)

  • service Apache2 (V tomto případě, protože jste nezmínili akci, kterou chcete provést pro službu, zobrazí se vám všechny možnosti dostupné pro tuto konkrétní službu.) Tento aspekt se liší v závislosti na službě, například u MySQL. pouze by se zmínilo, že chybí parametr. U ostatních služeb, jako je síťová služba, by se zmínil malý seznam všech dostupných možností.


SYSTEMD

Počínaje Ubuntu 15.04 bude Upstart zastarán ve prospěch Systemd. S Systemd pro správu služeb můžeme dělat následující (prostřednictvím vzoru systemctl action SERVICE):

systemctl start SERVICE - Slouží ke spuštění služby. Po restartu netrvá

systemctl stop SERVICE - Slouží k zastavení služby. Po restartu netrvá

systemctl restart SERVICE - Slouží k restartování služby

systemctl reload SERVICE - Pokud to služba podporuje, načte související konfigurační soubory bez přerušení jakéhokoli procesu, který službu používá.

systemctl status SERVICE - Zobrazuje stav služby. Řekne, zda je služba právě spuštěna.

systemctl enable SERVICE - Zapne službu, při příštím restartu nebo při příští startovací události. Po restartu přetrvává.

systemctl disable SERVICE - Vypne službu při příštím restartu nebo při další události zastavení. Po restartu přetrvává.

systemctl is-enabled SERVICE - Zkontrolujte, zda je služba aktuálně nakonfigurována tak, aby se při příštím restartu spustila nebo ne.

systemctl is-active SERVICE - Zkontrolujte, zda je služba aktuálně aktivní.

systemctl show SERVICE - Zobrazí všechny informace o službě.

Sudo systemctl mask SERVICE - Službu úplně deaktivujte jejím propojením s /dev/null; nemůžete službu spustit ručně nebo ji povolit.

Sudo systemctl unmask SERVICE - Odebere odkaz na /dev/null A obnoví se schopnost povolit nebo ručně spustit službu.


UPSTART (zastaralý od 15.04)

Pokud chceme použít oficiální Upstart způsob (Všimněte si, že v současné době ne všechny služby byly převedeny na Upstart), mohli bychom použít následující příkazy:

status SERVICE - Toto nám řekne, zda je převedená služba spuštěna nebo ne. Všimněte si, že toto je zastaralé ve prospěch start, stop, status & restart. Také nám sdělí, zda služba dosud nebyla převedena na upstart:

Převedená služba obvykle vydá aktuální stav (Spuštění, Spuštění, Zastavení ...) a ID procesu. Nekonvertovaná služba by způsobila chybu o neznámá úloha.

Některé zkratky mohou pracovat pouze s příkazem service výše, ale ne s níže uvedenými příkazy, pokud nejsou 100% převedeny na upstart služby:

  • START - Sudo start mysql

  • STOP - Sudo stop mysql

  • RESTARTOVAT - Sudo restart mysql

  • STAV - Sudo status smbd

Povolení/zakázání služby

Chcete-li přepnout spouštění nebo zastavení služby, musíte:

echo manual | Sudo tee /etc/init/SERVICE.override

kde stanza manual zastaví službu Upstart v automatickém načtení služby při příštím spuštění. Každá služba s koncovkou .override Bude mít přednost před původním souborem služby. Poté budete moci službu spustit manuálně. Pokud to nechcete, jednoduše smažte .override. Například:

echo manual | Sudo tee /etc/init/mysql.override

Umístí službu MySQL do režimu manual. Pokud to nechcete, můžete to jednoduše udělat

Sudo rm /etc/init/mysql.override

a Restartujte, aby se služba automaticky znovu spustila. Nejčastějším způsobem, jak povolit službu, je samozřejmě její instalace. Pokud nainstalujete Apache, Nginx, MySQL nebo jiné, automaticky se spustí po dokončení instalace a spustí se při každém spuštění počítače. Zakázání, jak je uvedeno výše, využije službu manual.

866
Luis Alvarado

V současné době existují ve skutečnosti tři různé způsoby, jak lze software spustit jako službu v Ubuntu, SysV, Upstart a systemd . Služba je zde definována jako program spuštěný systémem na pozadí, na rozdíl od služby spuštěné a spuštěné přímo uživatelem.

SysV

Tradičním způsobem, jak spustit služby v Linuxu, bylo umístit skript do /etc/init.d A poté pomocí příkazu update-rc.d (Nebo v distribucích založených na RedHat chkconfig) povolit nebo zakázat to.

Tento příkaz používá mírně komplikovanou logiku k vytvoření symbolických odkazů v /etc/rc#.d, Které řídí pořadí spouštěcích služeb. Pokud spustíte ls /etc/rc2.d, Uvidíte pořadí, ve kterém budou služby zabíjeny, se jménem souboru, jako je K##xxxx A začalo se jmény souborů S##xxxx. ## V S##xxxx Znamená "start order" pro službu xxxx. Naopak ## V K##xxxx Znamená příkaz k usmrcení služby xxxx.

Jedním z hlavních problémů s SysV bylo to, že při spouštění systému všechno muselo být provedeno sériově, jedna věc za druhou, takže časy spouštění systému byly opravdu pomalé . Byly učiněny pokusy o paralelizaci, ale byly náhodné a těžko využít. To byl hlavní důvod, proč bylo vytvořeno Upstart.

Povýšenec

Upstart používá soubory definice úlohy v /etc/init K definování toho, jaké události by služba měla být spuštěna. Takže, zatímco systém zavádí, upstart zpracovává různé události a pak může spustit více služeb paralelně. To jim umožňuje plně využívat zdroje systému, například spuštěním služby vázané na disk, zatímco běží jiná služba vázaná na CPU, nebo když síť čeká na přiřazení dynamické adresy IP.

Všechny spuštěné soubory úloh můžete zobrazit spuštěním ls /etc/init/*.conf

Dovolte mi, abych se zastavil a řekl, že pokud nevíte, co je služba nebo co dělá, NEZAKÁZÁJTE ji!

Ne všechny služby byly převedeny na upstart. Při práci na týmu serverů v Canonical za posledních několik měsíců jsem pracoval na několika převedených souborech úloh a nejhezčí část je, že umožňuje člověku zbavit se všech „magických“ skriptů a jednoduše vložit několik příkazů sem a tam přesně definovat, jak spustit službu, a nic víc. Zatím však bylo převedeno pouze několik tradičních síťových služeb, jako squid a samba.

Je služba upstart-based?

Chcete-li zjistit, zda je služba založena na upstartu, můžete spustit příkaz status:

status servicename

Pokud jde o zakázku upstart, zobrazí se toto:

$ status statd
statd start/running, process 942

Ale pokud tomu tak není, uvidíte něco podobného:

$ status Apache2
status: Unknown job: Apache2

V tomto případě nebyl Apache2 Převeden na upstart. Chcete-li tedy zakázat Apache2, Stačí spustit

Sudo update-rc.d Apache2 disable
Sudo service Apache2 stop

Zakažte služby (úlohy) v upstartu

Definice upstart úlohy nemají příkaz update-rc.d. Chcete-li zakázat úlohu, musíte ji zakázat přímo úpravou souboru úlohy. Existují dva způsoby, jak toho dosáhnout.

Pokud ji chcete i nadále spustit ručně, musíte okomentovat podmínku start on. Řekněme, že chcete nainstalovat samba, ale nechat jej spustit automaticky. Zde je soubor úlohy (v natty):

description "SMB/CIFS File Server"
author      "Steve Langasek <[email protected]>"

start on local-filesystems
stop on runlevel [!2345]

respawn

pre-start script
    RUN_MODE="daemons"

    [ -r /etc/default/samba ] && . /etc/default/samba

    [ "$RUN_MODE" = inetd ] && { stop; exit 0; }

    install -o root -g root -m 755 -d /var/run/samba
end script

exec smbd -F

Chcete-li zakázat samba, stačí před "#" Umístit start on local-filesystems. Pamatujte, že ačkoli se po spuštění nezačne zálohovat, musíte jej tentokrát zastavit

Sudo service smbd stop

Pokud však nikdy nechcete začít samba, navrhuji, abyste balíček skutečně odstranili. Pokud však chcete nainstalovat, ale nelze jej spustit, můžete také:

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

Zakázat službu pomocí stanzy start/stop (od 11.04)

Počínaje verzí upstart, která bude v 11.04, existuje nové klíčové slovo, které zakáže stanzy start on A stop on: manual. Dalším způsobem, jak zakázat službu od 11.04, je:

echo 'manual' | Sudo tee /etc/init/mysql.override

# command from root Shell
echo manual >> /etc/init/mysql.override

Můžete vytvořit soubor override a zakázat službu bez úpravy definice úlohy. Stačí do něj vložit klíčové slovo manual.

363
SpamapS

sysv-rc-conf

Zkuste použít sysv-rc-conf

Sudo apt-get install sysv-rc-conf

a začít spravovat služby, provést

Sudo sysv-rc-conf

Což vyvolá interaktivní okno, jako je tato

enter image description here

Stránky můžete dále procházet pomocí Ctrl+n pro další stránku a Ctrl+p pro předchozí stránku. Služby můžete povolit nebo zakázat výběrem SPACE na požadovaných úrovních běhu.

Jobs-Admin

Další alternativou by bylo Jobs-Admin instalací prostřednictvím

Sudo apt-get install jobs-admin

Což také poskytuje GUI jako je tato

jobs-admin preview

Pro zobrazení více úloh musíte zaškrtnout Zobrazit chráněné úlohy z jeho nabídky.

chkconfig

A třetí možností by bylo chkconfig ,

Sudo apt-get install chkconfig

Lze jej použít přes CLI chkconfig a zobrazit seznam úloh On/Off. Také si můžeme prohlížet systémové služby pomocí chkconfig –list

Služby lze zapnout pomocí

chkconfig <service> on

Služby lze vypnout pomocí

chkconfig <service> off

Můžeme dokonce přidat vlastní službu pomocí správného init skriptu se správnými záhlavími.

chkconfig --add <service>

update-rc.d

A další možnost může být označena zde update-rc.d , stručně vysvětleno zde .

U Ubuntu Serveru 12.04, update-rc.dpoužívá se místo chkconfig.

130
atenz

Pro ty z nás, kteří provozují Ubuntu přes ssh, si myslím, že nejhezčí volba je rcconf - textový program:

Sudo apt-get install rcconf
Sudo rcconf

alt text

Navigujte pomocí kláves se šipkami a klávesami se šipkami mezerník zapněte/vypněte. Změny přetrvávají během restartu.

Snímek obrazovky vypůjčený od tento blogpost , který také ukazuje sysv-rc-conf - podobný nástroj, který také umožňuje nastavit úroveň běhu. (Pro ty, kteří se náhodou starají o runlevely dost, aby je chtěli změnit :)

Bohužel rcconf nepracuje s upstartem (služby uvedené v /etc/init/*), jen s tradičním mechanismem (ls -l /etc/init.d/* - ty, které nejsou symbolickými odkazy).

Naštěstí mnoho služeb, které jsou relevantní při ssh-ing na server (Apache, Tomcat, mdadm, boinc-client ...), dosud nebyly přesunuty do upstartu.

49
j-g-faustus

Zjistil jsem, že existuje tento GUI nástroj, něco jako BUM, ale kompatibilní s Upstart:

  • Jobs-Admin

    Sudo apt-get install jobs-admin
    
18
Postadelmaga

Úpravy existujícího konfiguračního souboru upstart (jak je popsáno výše) není dobrý nápad. Aktualizovaný balíček by mohl poskytnout aktualizovanou konfiguraci a vy jste museli znovu a znovu opakovat své změny.

Když se podíváte na man 5 init najde vhodnější řešení: pomocí přepisovací konfigurace. Stručný příklad: Řekněme, že máme službu nazvanou „foobar“, takže by existoval soubor s názvem /etc/init/foobar.conf s jeho počáteční konfigurací. Nyní tento soubor nechcete odebrat ani upravovat - ale také nechcete, aby byla tato služba spuštěna? Umístěte tedy soubor přepsat: /etc/init/foobar.override, obsahující (volitelně záhlaví s popisem a) místo start on/stop on řádky umístíte řádek s jedním slovem: manual. Tímto způsobem řeknete upstartu, aby v podstatě používal foobar.conf, ale přepsat definici spouštění a spustit tuto službu pouze při manuálním vynucení (prostřednictvím service foobar start v našem příkladu).

12
Izzy

K dispozici je také Boot-Up Manager .

Instalovat: Sudo apt-get install bum

Další informace: http://www.marzocca.net/linux/bum.html

enter image description here

9
Sadi

Používám Stacer. Zobrazuje také služby a procesy. Kompletní sada nástrojů systému GUI. https://github.com/oguzhaninan/Stacer

2
HDK Bouma