diff --git a/content/systemd_service.md b/content/systemd_service.md index bd5a2e6..c6f29c4 100644 --- a/content/systemd_service.md +++ b/content/systemd_service.md @@ -45,3 +45,96 @@ A vypsat log přes journalctl: ``` $ journalctl -u foo-daemon ``` + +## Sekce konfiguráku + +### `[Unit]` - popis služby + +|Parametr |Popis | +|-------------|--------------------------------------------------------------------------------------------------------------------------------| +|Description |Krátký popis služby | +|Documentation|Seznam URI odkazů na dokumentaci | +|Before, After|Pořadí startu služeb | +|Requires |Pokud bude aktivována tato služba, aktivují se i služby v tomto seznamu | +|Wants |Slabší závislosti, než v parametru Requires. Pokud se nezdaří start některé služby z tohoto seznamu, služba se přesto nastartuje| +|Conflicts |Seznam konfliktních služeb | +  + +### `[Unit]` - konfigurace instalace + +|Parametr |Popis | +|--------------------|----------------------------------------------------------------------------------------------------------------| +|Alias |Alias služby | +|RequiredBy, WantedBy|Služba nastartuje, pokud budou nastartovány všechny služby z tohoto seznamu. Viz Requires a Wants v sekci Unit | +|Also |Seznam služeb, které budou povoleny nebo zakázány zároveň s touto službou (systemctl enable, systemctl disable)| +  + +### `[Service]` - konfigurace startu + +|Parametr |Popis | +|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +|Type |Způsob spouštění služby | +| | simple (výchozí)- spustit, jak je definováno v parametru ExecStart | +| | forking- služba je spuštěná, až dojde k forku a skončí rodičovský proces | +| | oneshot - podobné jako simple, ale předpokládá se, že proces skončí než se budou startovat následující služby. Lze definovat RemainAfterExit=yes, pak se předpokládá, že je služba aktivní, i když proces už skončil | +| | dbus- podobné jako simple, ale služba se považuje za spuštěnou, až dostane D-Bus jméno | +| | notify- podobné jako simple, ale služba se považuje za spuštěnou, až pošle signál systemd | +| | idle- spuštění služby je odloženo až doběhnou všechny úlohy| +|ExecStart |Příkaz i s argumenty pro spuštění služby. | +|ExecStop |Příkaz pro zastavení služby | +|ExecReload |Příkaz pro přenačtení konfigurace | +|Restart |Pokud je zadán tento parametr, služba je restartována v případě, že se ukončí nebo spadne. Při ukončení přes systemctl stop k restartu nedojde | +|RemainAfterExit|Pokud je nastaveno na True, služba je považována za spuštěnou, i když skončí proces | +  + +## Přiklady konfigurace +``` +[Unit] +Description=The NGINX HTTP and reverse proxy server +After=syslog.target network.target remote-fs.target nss-lookup.target + +[Service] +Type=forking +PIDFile=/run/nginx.pid +ExecStartPre=/usr/sbin/nginx -t +ExecStart=/usr/sbin/nginx +ExecReload=/bin/kill -s HUP $MAINPID +ExecStop=/bin/kill -s QUIT $MAINPID +PrivateTmp=true + +[Install] +WantedBy=multi-user.target +``` + +``` +[Unit] +Description=The Apache HTTP Server +After=network.target remote-fs.target nss-lookup.target + +[Service] +Type=notify +EnvironmentFile=/etc/sysconfig/httpd +ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND +ExecReload=/usr/sbin/httpd $OPTIONS -k graceful +ExecStop=/bin/kill -WINCH ${MAINPID} +KillSignal=SIGCONT +PrivateTmp=true + +[Install] +WantedBy=multi-user.target +``` + +``` +[Unit] +Description=Redis persistent key-value database +After=network.target + +[Service] +ExecStart=/usr/bin/redis-server /etc/redis.conf --daemonize no +ExecStop=/usr/bin/redis-shutdown +User=redis +Group=redis + +[Install] +WantedBy=multi-user.target +``` \ No newline at end of file