Zařízení systemd nahrazuje starší inicializační skripty System-V z dřívějších verzí. Systemd je zařízení řízené událostmi, které umožňuje paralelní spouštění, řízení nebo zastavování nezávislých subsystémů. Zde vysvětlíme, jak přidat vlastní skript do zařízení systemd.
1. Napište a odlaďte vlastní skript
Skript systemd je obvykle napsán jako skript shellu. Začněte psaním vlastního skriptu pomocí běžných konvencí. Náš skript budeme nazývat my-custom-script.sh a je přímočarý:
#!/bin/sh echo I am a custom script
2. Skript musí být spustitelný
Udělejme skript spustitelný:
# chmod 0755 my-custom-script.sh
3. Popište vlastní skript pro systemd
Se skriptem napsaným a otestovaným ručně je skript připraven k popisu systému systemd. K tomu je potřeba soubor [name].service. Syntaxe používá formát INI běžně používaný pro konfigurační soubory. Pokračujeme-li v našem příkladu, potřebujeme soubor my-custom-script.service. Spustitelný soubor se spustí přesně jednou při každém spuštění služby. Služba nebude spuštěna, dokud nebude síťová vrstva aktivní a stabilní:
# This is my-custom-script.service, which describes the my-custom-script.sh file [Unit] Description=This is executed on shutdown or reboot DefaultDependencies=no Wants=network-pre.target # (if network is required before running the script) Before=network-pre.target shutdown.target reboot.target halt.target # Defines the order in which units are stoped. #(REQUIRED) [Service] Type=oneshot # enables specifying multiple custom commands that are then executed sequentially. (REQUIRED) RemainAfterExit=true # required by the oneshot setting (REQUIRED) Environment=ONE='one' "TWO='2" # you can set some environment variables, that may be necessary to pass as arguments ExecStart=/bin/true # because is a shutdown script nothing is done when this service is started ExecStop=/bin/bash /usr/local/bin/my-custom-script.sh ${ONE} ${TWO} # < --*********** change to the script full path ************ (REQUIRED) TimeoutStopSec=1min 35s # Configures the time to wait for stop. [Install] WantedBy=multi-user.target # When this unit is enabled, the units listed in WantedBy gain a Want dependency on the unit. (REQUIRED)
4. Umístěte soubor služby do adresáře kolekce očekávaných služeb
Umožňuje umístit vlastní skript do adresáře kolekce služeb, tj. /etc/systemd/system/ :
# cp my-custom-script.sh /etc/systemd/system/
5. Povolit skript pro budoucí restartování
Podobně jako u chkconfig z dřívějších verzí musí být služba povolena. Protože byla přidána nová služba, upozorněte démona systemd, aby se překonfiguroval:
# systemctl enable my-custom-script.service # systemctl daemon-reload