GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak spustit Shell Script jako službu Systemd v Linuxu

Systemd je správce služeb, který vám poskytuje funkce správy démonů, sledování procesů, připojení, automatické připojení. Ke správě úlohy používá řídicí skupinu Linux. Nahrazuje starší initd a je k dispozici v distribucích Debian, Fedora, RedHat, ubuntu, centos, arch Linux.

V tomto článku vám ukážu, jak vytvořit službu pomocí systemd. Vytvořím ruční skript, který bude fungovat jako proces pro zjištění využití disku systému Linux.

Začněme. Vytvořte bash skript, který přesměruje datum a využití disku v souboru. Soubory můžete vytvářet v libovolném umístění. Zde vytvořím spustitelný adresář /usr/bin

$ sudo vim /usr/bin/script.sh

Zkopírujte a vložte následující skript a uložte soubor.

#!/bin/bash# Skript generuje využití disku systémem a ukládá jej do souboru while truedodate>> /var/storage-monitor.txtsudo du -sch />> /var/storage-monitor.txtsleep 120done 

Udělejte soubor spustitelným spuštěním následujícího příkazu.

$ chmod +x /usr/bin/script.sh

Nyní vytvoříme službu pro spuštění skriptu. Stačí vytvořit soubor v následujícím adresáři. Všimněte si, že můžete zadat libovolný název, ale musí končit příponou .service.

$ vim /etc/systemd/system/monitor-disk.service

A přidejte následující,

[Unit]Description=Sledování mého disku serviceDocumentation=https://www.kernel.org/#After=networking.service[Service]Type=simpleUser=rootGroup=rootTimeoutStartSec=0Restart=on-failureRestartSec=30s#ExecStartPre=ExecStart=/usr/bin/script.shSyslogIdentifier=Diskutilizace#ExecStop=[Install]WantedBy=multi-user.target

Vysvětlení

  • Sekce [Unit] se skládá z popisu a podrobností dokumentace. Zde jsem zmínil „Po“, které uvádí, že služba, kterou se chystáme vytvořit, musí být spuštěna jako první.
  • Sekce [Služba] definuje typ služby, uživatelské jméno, skupinu, co dělat v případě selhání, časový limit restartu. Hlavní je „ExecStart“, který říká, že se má spustit náš soubor skriptu. Můžete také definovat ‚ExecStartPre‘ pro definování čehokoli před skutečným souborem skriptu. „SyslogIdentifier“ je klíčové slovo pro identifikaci naší služby v syslogu. Podobně ExecStop je instrukce, která říká, co udělat pro zastavení služby.
  • Sekce [Install] se používá k definování různých úrovní cíle v systému.

Stačí uložit soubor a spustit službu pomocí příkazu systemctl.

$ systemctl start monitor-disk.service

Zkontrolujte stav služby pomocí příkazu systemctl status. Můžete také vidět název služby, formulář souboru, kde je služba systemd načtena, dokumentaci, běžící proces a protokoly.

$ systemctl status monitor-disk.service

Ověřte, zda váš skript správně funguje, a to tak, že se podíváte do souboru definovaného v souboru skriptu.

$ cat /var/storage-monitor.txt

Můžete také zkontrolovat aktivaci a deaktivaci správce systemd.

$ systemctl enable monitor-disk.service
$ systemctl zakázat monitor-disk.service

Zkontrolujte také zastavením a restartováním služby. Neměla by být vyvolána žádná chyba.

$ systemctl stop monitor-disk.service
$ systemctl restart monitor-disk.service

Systemd také umožňuje výchozí protokolování v syslog. Takže můžete zobrazit živý protokol služby pomocí následujícího příkazu. Vyhledejte klíčové slovo ‚SyslogIdentifier=Diskutilization‘

jste zamítli ve výše uvedeném souboru služby.

$ tail -f /var/log/syslog

Závěr

Tento článek ukazuje, jak spustit vlastní skript shellu jako službu systemd. Doufáme, že jste se naučili, jak vytvořit svou vlastní službu. Neváhejte a pošlete nám svůj názor.


Ubuntu
  1. Jak vytvořit službu Systemd v Linuxu

  2. Linux – umístění skriptu Fsck?

  3. Jak spustit skript Shell na pozadí?

  1. Jak spustit skript??

  2. Jak zajistit, aby skript Python běžel jako služba nebo démon v Linuxu

  3. Jak změnit slovo v souboru pomocí skriptu linux shell

  1. Jak vytvořit dočasný soubor ve skriptu Shell?

  2. Jak spustit skript s systemd těsně před vypnutím?

  3. Šablony s Linuxem ve skriptu Shell?