Špatné systemd
má svůj podíl odpůrců, ale zdá se, že tu zůstane pro administrátory Linuxu, takže bychom si na to mohli zvyknout. Tento praktický systemd
reference příkazů vám pomůže zachovat si zdravý rozum při pokusu o provádění běžných administrativních úloh. Takže dokud nezískáme něco, co je použitelnější, chutnější a žádanější než systemd
, vychutnejte si tento seznam deseti užitečných příkazů pro vaše pohodlí. Tyto příkazy nejsou v žádném konkrétním pořadí podle důležitosti nebo relevance.
Seznam souborů jednotek
Z systemd
manuálová stránka:Soubor jednotky je prostý textový soubor ve stylu ini, který kóduje informace o službě, soketu, zařízení, bodu připojení, bodu automatického připojení, odkládacím souboru nebo oddílu, cíli spouštění, sledovaném souboru. systémová cesta, časovač řízený a kontrolovaný systemd
, segment správy zdrojů nebo skupina externě vytvořených procesů.
$ SystemCtl List-Unit-FileSinit State proc-Sys-FS-binfmt_misc.automount static dev-hgenepages.mount static dev-mqueue.Mount static Proc-Sys-FS-binfmt_misc.mount static Sys-fs -Fuse-Connections.Mount Static Sys-Kernel-Config.Mount Static Sys-Kernel-Debug.mount Static Tmp.Mount Deaktibledbrandbot.Path DisabledSystemd-ASK-Password-Console.Path Static Systemd-Ask-Password-PlyMouth.Path Systemd -Ask-Password-Wall.Path Static Session-1.Scope Static ARP-ETHERS.Service DeaktibledAuditd.Service Enabled [email protected] Enabled
Samozřejmě můžete vždy použít kanál grep
zobrazíte pouze povolené služby.
$ systemctl list-unit-files |grep enabledauditd.service enabled [email protected] enabled crond.service enabled dbus-org.fedoraproject.FirewallD1.service enabled dbus-org.freedesktop.nm-dispatcher.service enabled firewalld.service enabled [email protected] enabled irqbalance.service enabled kdump.service enabled lvm2-monitor.service enabled
Tyto soubory jednotek, umístěné pod /lib/systemd/system
, jsou zhruba ekvivalentní starším init skriptům, které byly umístěny pod /etc/rc.d/init.d
. Ve skutečnosti, pokud vy nebo vaše instalace softwaru vytvoříte init skripty, odpovídající systemd
soubor jednotky je namapován pro vás. Další vysvětlení poskytuje /etc/rc.d/init.d/README
:
Hledáte tradiční init skripty v /etc/rc.d/init.d a jsou pryč? Zde je vysvětlení, co se děje:Používáte OS založený na systemd, kde tradiční init skripty byly nahrazeny nativními soubory systemd services. Soubory služeb poskytují velmi podobné funkce jako init skripty. Chcete-li použít soubory služeb, jednoduše vyvolejte "systemctl", který vypíše seznam všech aktuálně běžících služeb (a dalších jednotek). Pomocí "systemctllist-unit-files" získáte seznam všech známých souborů jednotek, včetně zastavených, zakázaných a maskovaných. Ke spuštění nebo zastavení služby použijte "systemctl startfoobar.service" a "systemctl stop foobar.service". Další podrobnosti naleznete v systemctl(1). Všimněte si, že tradiční init skripty nadále fungují na systemdsystem. Init skript /etc/rc.d/init.d/foobar je implicitně namapován do servisní jednotky foobar.service během inicializace systému. Děkujeme! Další čtení:man:systemctl(1) man:systemd(1) http:// 0pointer.de/blog/projects/systemd-for-admins-3.html http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities
Jak můžete vidět, init.d
byl odstraněn ve prospěch systemd
. Zůstane tu, dokud někdo nepřijde s něčím lepším. (Doufám, že někdo rychle pracuje na náhradě.)
Seznam jednotek
Výpis aktivních jednotek zobrazuje mnoho užitečných informací o vašich načtených a aktivních službách. Výstup je příliš podrobný, než aby jej zde bylo možné demonstrovat, ale zkuste na svém systému použít následující příkaz, abyste viděli, co tím myslím.
$ systemctl list-units
Stavová pole jsou dobře vidět, ale nejužitečnější je pro mě pole popisu. Poskytuje podrobné informace o vašich službách.
Spustit službu
Chcete-li získat název služby, vypište soubory jednotky a vyhledejte ten, který chcete. Poté použijte systemctl
příkaz ke spuštění vaší služby. Používám firewalld
jako příklad.
$ sudo systemctl spustit firewalld
Překvapivě, nebo možná ne tak překvapivě, neexistuje žádná odezva při spuštění, zastavení nebo restartování služby. Chcete-li zkontrolovat stav služby, musíte použít příkaz status.
Kontrola stavu služby
Chcete-li zkontrolovat stav služby, použijte stav systemctl název-služby
příkaz.
$ sudo systemctl status sshd[sudo] heslo pro khess:● sshd.service – démon serveru OpenSSH Načteno:načteno (/usr/lib/systemd/system/sshd.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (v provozu) od středy 29. 4. 2020 07:44:57 CDT; Před 2h 17min Dokumenty:man:sshd(8) man:sshd_config(5) Hlavní PID:1055 (sshd) CGroup:/system.slice/sshd.service └─1055 /usr/sbin/sshd -DApr 29 07:44:57 centos7 systemd[1]:Spouštění démona serveru OpenSSH...29. dubna 07:44:57 centos7 sshd[1055]:Server naslouchající na portu 0.0.0.0 22. 29. dubna 07:44:57 centos7 sshd[1055]:Server poslech na ::port 22. 29. dubna 07:44:57 centos7 systemd[1]:Spuštěn démon serveru OpenSSH. 29. dubna 07:51:35 centos7 sshd[1396]:Přijaté heslo pro khess z portu 192.168.16769 ssh 522.168.16769 ssh /code>
Líbí se mi status systemd kvůli uvedeným detailům. Například ve výše uvedeném seznamu vidíte úplnou cestu k souboru jednotky, stav, příkaz start a poslední změny stavu.
[ Chcete si vyzkoušet Red Hat Enterprise Linux? Stáhněte si ji nyní zdarma. ]
Zastavit službu
Zastavení běžící služby je stejně snadné jako spuštění.
$ sudo systemctl stop firewalld
Opět nevidíte žádnou odpověď od vydání tohoto příkazu. Chcete-li zkontrolovat svůj úspěch nebo neúspěch, zadejte stav služby.
Restartování služby
Pokud chcete zastavit a spustit službu bez zadávání dvou příkazů (sysadmins jsou koneckonců líní), proveďte restart.
$ sudo systemctl restart firewalld
Nezobrazuje se žádná odpověď systému.
Restartování, zastavení a vypnutí systému
Tyto tři úkoly jsou typické, které správci systému potřebují znát, a jsou nyní pod kontrolou systemd
.
Restartovat
Existuje několik způsobů, jak restartovat systémy, ale starý pohotovostní režim, restart, je ve skutečnosti odkazem na systemctl
příkaz. Předpokládám, že protože to funguje, propojuje systemctl
příkaz s přepínačem restartu přidaným takto:
Restart $ sudo systemctl
Stejný odkaz platí pro příkazy zastavení a vypnutí.
Vypnutí a zastavení
Nezáleží na tom, jak jste to dělali s halt -p
nebo vypnout nyní
nebo cokoli, univerzální příkaz je nyní:
vypnutí $ sudo systemctl
Tento příkaz vypne systém.
Nastavit služby tak, aby se spouštěly při spouštění
Jste zvyklí na chkconfig
příkaz, který umožní vašim službám spouštět se při spouštění a pod konkrétní úrovní běhu. No, ty časy jsou také pryč a byly uzurpovány všudypřítomným systemctl
příkaz.
Povolení spuštění služby při spouštění
Chcete-li nastavit spuštění jakékoli služby při spuštění, zadejte následující příkaz. Používám firewalld
jako příklad služby.
$ sudo systemctl povolit firewalld
Zakázání spuštění služby při spouštění
Chcete-li zabránit spuštění jakékoli služby při spouštění, zadejte:
$ sudo systemctl zakázat firewalld
firewall
služba se nespustí při spouštění.
Sbalit
Tento stručný, ale praktický systemd/systemctl
referenční příručka by vám měla trochu ulehčit práci s systemd
. Taková je alespoň teorie. A jak často uvidíte v mých článcích nebo mě slyšíte říkat nahlas:"Na papíře všechno funguje." Nezapomeňte mi na Twitteru dát vědět, co si myslíte o mých článcích, a také mi navrhnout nová témata.
[ Bezplatný online kurz:Technický přehled Red Hat Enterprise Linux. ]