systemd
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Následující verze | Předchozí verze | ||
| systemd [2017/01/16 15:36] – vytvořeno djbuldog | systemd [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| ====== SystemD ====== | ====== SystemD ====== | ||
| - | * https:// | ||
| * základem je jednotka.. je několik typů, například: | * základem je jednotka.. je několik typů, například: | ||
| - | * service - jednotka pro spouštění procesu | + | * service - spouštění procesu |
| - | * target - jednotka, která obsahuje | + | * target - seznam jednotek |
| + | * mělo by jít použít i jako skupinu služeb pro hromadné zapínání/ | ||
| + | * timer - časovač k jednotce service (obdoba cron) | ||
| * jednotka umí | * jednotka umí | ||
| * restartovat při pádu, sledovat stav | * restartovat při pádu, sledovat stav | ||
| Řádek 14: | Řádek 15: | ||
| * výpis aktuálních strojů zobrazuje '' | * výpis aktuálních strojů zobrazuje '' | ||
| - | ===== systemctl ===== | + | ===== Příkaz |
| * příkaz pro řízení, výpis jednotek | * příkaz pro řízení, výpis jednotek | ||
| Řádek 39: | Řádek 40: | ||
| * syntax: '' | * syntax: '' | ||
| * příkazy | * příkazy | ||
| - | * Pro zjišťování stavu konkrétních jednotek můžeme použít příkaz | + | * '' |
| * Tyto příkazy navíc vrací jako návratový kód nulu, pokud je podmínka splněna pro alespoň jednu jednotku. | * Tyto příkazy navíc vrací jako návratový kód nulu, pokud je podmínka splněna pro alespoň jednu jednotku. | ||
| - | | + | |
| - | * jednotky, které jsou instalovány z repozitářů, | + | * služba může zobrazit i nečekaně stav " |
| - | * Vlastní systémové jsou standardně v '' | + | * '' |
| - | * '' | + | * '' |
| - | * aktualizace konfiguračních souborů jednotek (nelze aktualizovat jen jednu) | + | * aktualizují se všechny jednotky |
| + | * musí se volat po každé změně jakékoliv jednotky | ||
| + | * '' | ||
| + | * '' | ||
| + | * lze zjistit například čas startu procesu | ||
| + | * pro výpis konkrétního parametru lze použít argument | ||
| - | * WantedBy a RequiredBy, které říkají, kam se mají přidat závislosti při příkazu systemctl enable. | + | |
| - | * Pokud chceme nějakou jednotku spouštět po startu, typicky nastavíme WantedBy=default.target, | + | * jednotky, které jsou instalovány z repozitářů, |
| + | * systémové ''/ | ||
| + | * uživatelské ''/ | ||
| + | * vlastní jednotky jsou standardně | ||
| + | * systémové ''/ | ||
| + | * uživatelské ''/ | ||
| + | * osobní '' | ||
| + | |||
| + | ===== Jednotka service ===== | ||
| + | |||
| + | * skládá se ze tří částí | ||
| + | * Unit | ||
| + | * Service | ||
| + | * Install | ||
| + | |||
| + | * service | ||
| + | * Type - typ služby | ||
| + | * Simple - spustí se proces, který je hlídán. Ukončení procesu způsobí ukončení služby | ||
| + | * Fork - předpokládá se, že spouštěný proces se ukončí a spustí jiný. Aby byla služba považována za aktivní, musí běžet aspoň jeden child | ||
| + | * Oneshot - proces se spustí pouze jednorázově a skončí. Je možné nastavit, aby se služba tvářila po ukončení jako stále aktivní | ||
| + | * ExecStartPre - co zavolat před spuštěním služby (může být použit opakovaně pro různé příkazy) | ||
| + | * ExecStart - co zavolat pro spuštění služby | ||
| + | * ExecStop - co zavolat pro ukončení služby. Volá se i v případě, že služba je zabita nebo sama ukončena. | ||
| + | * DefaultTimeoutStartSec a DefaultTimeoutStopSec přenastavit výchozí časy, nebo pro každou jednotku zvlášť pomocí TimeoutStartSec a TimeoutStopSec. | ||
| + | * EnvironmentFile | ||
| + | * lze využít k načtení parametrů z konfiguračního souboru | ||
| + | * který může být navíc modifikován příkazem v ExecStartPre (např. nastaví aktuální IP adresu) | ||
| + | * například | ||
| + | * vytvoří se ''/ | ||
| + | * a pak použije jako: | ||
| + | < | ||
| + | [Service] | ||
| + | EnvironmentFile=/ | ||
| + | ExecStart=/ | ||
| + | </ | ||
| + | |||
| + | * install | ||
| + | | ||
| + | * Pokud chceme nějakou jednotku spouštět po startu, typicky nastavíme WantedBy=default.target, | ||
| * šablony - parametrické unity | * šablony - parametrické unity | ||
| * Pokud v systemd pracujeme s jednotkou obsahující zavináč (ve tvaru jmeno@parametr.typ), | * Pokud v systemd pracujeme s jednotkou obsahující zavináč (ve tvaru jmeno@parametr.typ), | ||
| - | * hodnoty DefaultTimeoutStartSec a DefaultTimeoutStopSec přenastavit výchozí časy, nebo pro každou jednotku zvlášť pomocí TimeoutStartSec a TimeoutStopSec. | ||
| - | https:// | + | ===== Jednotka timer ===== |
| + | |||
| + | * ukládá se do souboru '' | ||
| + | * dva typy | ||
| + | * Realtime timers | ||
| + | * spouštění na základě skutečného času jako událost kalendáře (obdoba cron) | ||
| + | * definuje se parametrem '' | ||
| + | * Monotonic timers | ||
| + | * spouští se relativně k nějakému startovacímu bodu | ||
| + | * Například OnBootSec, OnActiveSec | ||
| + | * při uspání počítače se zastaví | ||
| + | * definuje se parametrem '' | ||
| + | |||
| + | * seznam aktivních časovačů lze vypsat příkazem | ||
| + | |||
| + | systemctl list-timers | ||
| + | NEXT | ||
| + | Sun 2017-12-03 11:00:59 CET 9min left Sun 2017-12-03 10:01:46 CET 49min ago anacron.timer | ||
| + | Sun 2017-12-03 11:09:00 CET 17min left Sun 2017-12-03 10:39:04 CET 12min ago phpsessionclean.timer | ||
| + | Sun 2017-12-03 22:00:00 CET 11h left Sun 2017-12-03 10:17:21 CET 34min ago fstrim.timer | ||
| + | Mon 2017-12-04 01:02:19 CET 14h left Sun 2017-12-03 10:17:17 CET 34min ago apt-daily.timer | ||
| + | Mon 2017-12-04 06:04:13 CET 19h left Sun 2017-12-03 06:59:46 CET 3h 51min ago apt-daily-upgrade.timer | ||
| + | Mon 2017-12-04 06:47:32 CET 19h left Sun 2017-12-03 06:47:32 CET 4h 4min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service | ||
| + | |||
| + | * Příklad s fstrim | ||
| + | * pravidelné spouštění příkazu každou neděli v deset hodin | ||
| + | |||
| + | systemctl cat fstrim.service | ||
| + | [Unit] | ||
| + | Description=Discard unused blocks | ||
| + | |||
| + | [Service] | ||
| + | Type=oneshot | ||
| + | ExecStart=/ | ||
| + | |||
| + | systemctl cat fstrim.timer | ||
| + | [Unit] | ||
| + | Description=Discard unused blocks once a week | ||
| + | Documentation=man: | ||
| + | |||
| + | [Timer] | ||
| + | # | ||
| + | OnCalendar=Sun, | ||
| + | AccuracySec=1h | ||
| + | Persistent=true | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=timers.target | ||
| + | |||
| + | ===== Zdroje ===== | ||
| + | |||
| + | * https:// | ||
| + | * návod pro začátečníky tak nějak | ||
| + | * https:// | ||
| + | * kompletní detailní dokumentace k systemd | ||
| + | * zajímavé podstránky | ||
| + | * https:// | ||
| + | * volby pro spouštění příkazů přes ExecStop, ExecStart, Exec*... | ||
| + | * https:// | ||
| + | * volby pro jednotky typu service | ||
| + | * https:// | ||
| + | * volby pro jednotku | ||
| + | * http:// | ||
| + | * zadávání času, například do timer jhednotky | ||
systemd.1484577387.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
