Systém systemd init je nyní součástí téměř všech distribucí Linuxu. Jako správce nebo vývojář vytváříte služby, které může systemd spravovat. Pokud například chcete spouštět služby při spouštění nebo je chcete ručně ovládat, lze to provést prostřednictvím souboru vlastní služby.
V tomto tutoriálu projdu, jak vytvořit soubor služby systemd v systému Linux.
Co je soubor služeb
Než půjdeme dále, pojďme pochopit, co je soubor služby systemd a jak se vytváří v systému Linux.
Soubor služby systemd obsahuje instrukce nastavené pro systemd pro správu služby. Obvykle obsahuje tři části:
- Jednotka
- Servis
- Nainstalujte
The Jednotka sekce obsahuje základní informace o službě, jako je krátký popis, stránky dokumentace a cesta k závislostem. The Nainstalujte sekce je volitelná, ale obvykle řídí, v jakém stavu systému by měla být služba povolena.
The Servis sekce je normálně vložena mezi jednotku a sekci instalace. Primárně obsahuje typ služby a cestu ke spustitelným souborům, což jsou v podstatě příkazy, které se mají provést při vyvolání služby systemd.
Takto vypadá typická struktura servisního souboru.
[ Jednotka ]
Směrnice1 = návod
Směrnice2 = návod
…
[ Servis ]
Směrnice1 = návod
Směrnice2 = návod
…
[ Nainstalujte ]
Směrnice1 = návod
Směrnice2 = návod
…
Zde jsou direktivy parametry, které přebírají svůj příslušný vstup. Například, Popis direktiva přebírá řetězec názvu služby. podobným způsobem, ExecStart bere v úvahu úplnou cestu ke spustitelnému souboru.
Typický servisní soubor ssh.service je uveden níže.
Jak vytvořit soubor služby
Pro vytvoření služby systemd je nutné porozumět klíčovým direktivám. V této příručce se budu zabývat základními směrnicemi, které vám mohou pomoci vytvořit plně funkční soubor služeb.
Vytvoření souboru služby zahrnuje několik kroků, začněme vytvořením souboru skriptu.
Poznámka: Chcete-li pokračovat v níže uvedené metodě, musíte mít oprávnění root.
1. Vytvoření skriptu
Počáteční krok zahrnuje vytvoření kódu, který bude spuštěn, když služba zahájí svou činnost. Pro tento tutoriál vytvářím bash skript, který bude ukládat dobu provozu systému Linux a využití paměti.
Vytvořme skript v aktuálním adresáři s názvem myscript.sh pomocí nano editoru.
sudo nano myscript.shNyní přidejte níže uvedený skript do souboru a uložte jej stisknutím ctrl+x a pak a .
#!/bin/bashecho '>>Zde je doba provozuschopnosti vašeho systému<<' > Domov / sám / myfile.txt
doba provozuschopnosti >> Domov / sám / myfile.txt
echo '>>Zde je využití paměti vašeho systému<<' >> / Domov / sám / myfile.txt
volný, uvolnit -m >> Domov / sám / myfile.txt
spát 60
Skript obsahuje několik řetězců echo a doba provozuschopnosti a volný, uvolnit příkazy.
The doba provozuschopnosti příkaz v Linuxu se používá k vytištění, jak dlouho systém běží a kolik uživatelů je připojeno s průměrným zatížením systému za posledních 1, 5 a 15 minut.
The volný, uvolnit příkaz se používá k tisku využití paměti systému, zatímco příkaz -m příznak se používá k tisku výstupu MB .
Pro uložení informací do textového souboru používáme speciální operátory zvané operátory přesměrování. The > operátor slouží k vložení textu do zmíněného textového souboru. Pokud však soubor ještě neexistuje, bude vytvořen. Zatímco >> operátor se používá k připojení textu v souboru. The spát příkaz se používá k udržení aktivity služby po dobu minimálně jedné minuty.
Nyní vytvořte spustitelný skript udělením potřebných oprávnění.
sudo chmod +x myscript.shSkript má nyní oprávnění ke spuštění, pojďme k další části.
Poznámka: Aby byl soubor služby bezchybný, použijte ve skriptu bash absolutní cestu k souboru.
2. Vytvoření souboru .service
Dále vytvořte soubor služby s .servis rozšíření. Soubor služby musí být vytvořen v /etc/systemd/system adresář. Nejprve přejděte do tohoto adresáře pomocí CD příkaz.
CD / atd / systemd / SystémSoubor služby můžete vytvořit v libovolném adresáři a později tento soubor přesunout do tohoto adresáře.
Vytvářím servisní soubor s myservice.service název.
sudo nano myservice.serviceNyní do souboru přidejte následující řádky.
[ Jednotka ]Popis = Moje služba
[ Servis ]
Typ = jednoduché
ExecStart = / zásobník / bash / Domov / sám / skript.sh
Restartujte = při selhání
[ Nainstalujte ]
WantedBy =multi-user.target
Všimněte si, že [Jednotka], [Služba], a [Nainstalujte] jsou citlivý na velká písmena . Servisní soubor nebude fungovat, pokud je některý z nich uveden nesprávně, například [UNIT] nebo [SERVICE].
Název služby je zadán jako Moje služba v Popis směrnice o [Jednotka] sekce.
The Typ služby je jednoduchý v [Servis] sekce, což je výchozí typ. Rozvětvení , jeden výstřel , oznámit , dbus , a nečinný jsou některé z dalších typů.
Pokud chcete, aby byla služba specifická pro uživatele, pak Uživatel direktivu lze také použít s uživatelským jménem uživatele. Použitím této direktivy bude uživatelská oprávnění služby závislá.
Zatímco ExecStart obsahuje úplnou cestu ke spustitelnému souboru. Ve výše uvedeném příkladu soubor skriptu myscript.sh je uložen v /domů/sam/ adresář. Tato direktiva ve skutečnosti řídí, co se má provést, když je služba vyvolána systémem systemd. Pokud není zadána úplná cesta příkazu, bude automaticky vyřešena tak, že se opraví absolutní cesty, jako např /usr/local/bin , /usr/bin/, a /zásobník . Je naprosto v pořádku používat název spustitelného souboru, pokud jsou ve standardních adresářích příkazů, ale jinak uveďte absolutní cestu. Všimněte si, že lze použít i více příkazů oddělených středníkem (;).
The [Nainstalujte] sekce je volitelná; však označuje, jak je služba povolena. The WantedBy direktiva bere cílové soubory na úrovni běhu jako parametry. Různé cílové soubory indikovaly různé úrovně běhu systému, jako např vypnout , zachránit , Multi uživatel , grafický , a restartovat .
The víceuživatelský.cíl znamená, že služba bude povolena, když je systém ve stavu umožňujícím víceuživatelské negrafické relace.
3. Aktivace Služby
Chcete-li službu aktivovat, nejprve znovu načtěte konfiguraci systemd pomocí systemctl utility.
sudo systemctl daemon-reloadPoté službu znovu aktivujte pomocí systemctl příkaz s umožnit .
sudo systemctl umožnit myservice.servicePro ověření zkontrolujte stav služby pomocí stav systemctl příkaz.
Služba je úspěšně spuštěna.
Nyní si přečteme textový soubor myfile.txt služba vytvořená v /Domov adresář.
Jak vytvořit soubor služby Systemd pro běžného uživatele
Postup vytvoření servisního souboru pro běžného uživatele je podobný způsobu vytvoření servisního souboru administrátorem. Adresář pro uložení souboru služby pro běžné uživatele se však liší. Normální uživatelé musí umístit své soubory služeb do ~/.config/systemd/user . Tento adresář musí být vytvořen pomocí mkdir příkaz.
mkdir ~ / .config / systemd / uživatelPro aktivaci služby běžným uživatelem -uživatel příkaz je vložen s systemctl namísto sudo .
systemctl --uživatel daemon-reloadsystemctl --uživatel umožnit SERVICE-NAME.service
systemctl --uživatel stav SERVICE-NAME.service
The -uživatel volba se používá ke správě uživatelských servisních souborů systemd.
Jak odstranit soubor služby
Chcete-li odstranit soubor služby, nejprve je třeba službu zastavit.
sudo systemctl stop SERVICE-NAME.serviceZkontrolujte stav pomocí stav systemctl příkaz, abyste věděli, zda je služba zastavena nebo ne. Poté soubor služby odstraňte pomocí rm příkaz.
sudo rm / atd / systemd / Systém / SERVICE-NAME.serviceNyní znovu načtěte systemd konfigurace.
sudo systemctl daemon-reloadZávěr
Služba custom systemd je výhodná v různých scénářích. V této příručce jsme se naučili, jak vytvořit vlastní soubor služby systemd pro správce systému a jak mohou běžní uživatelé vytvořit soubor služby. Dále také vidíme postup odstranění souboru služby.