Uživatelské nástroje

Nástroje pro tento web


systemd

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
systemd [2017/01/16 15:36] – vytvořeno djbuldogsystemd [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 ====== SystemD ====== ====== SystemD ======
  
-  * https://www.root.cz/clanky/nebojte-se-systemd-co-to-je-a-co-umi/ 
   * 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 (obdoba init skriptu) 
-    * target - jednotka, která obsahuje seznam jednotek vedoucích k požadovanému cíli (obdoba run level)+    * target - seznam jednotek service vedoucích k požadovanému cíli (obdoba run level
 +      * mělo by jít použít i jako skupinu služeb pro hromadné zapínání/vypí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 ''machinectl''     * výpis aktuálních strojů zobrazuje ''machinectl''
  
-===== systemctl =====+===== Příkaz systemctl =====
  
   * příkaz pro řízení, výpis jednotek   * příkaz pro řízení, výpis jednotek
Řádek 39: Řádek 40:
   * syntax: ''systemctl PŘÍKAZ PATTERN'', kde PATTERN je seznam jednotek ve tvaru JEDNOTKA[.TYP]   * syntax: ''systemctl PŘÍKAZ PATTERN'', kde PATTERN je seznam jednotek ve tvaru JEDNOTKA[.TYP]
   * příkazy   * příkazy
-    * Pro zjišťování stavu konkrétních jednotek můžeme použít příkaz is-active/is-enabled/is-failed.+    * ''is-active/is-enabled/is-failed'' - 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. 
-    * povolení či zakázání spouštění jednotky slouží příkazy enable/disable. +      pokud se služba terpve spouští, vrací is-active nenulovou hodnotu (tj. není aktivní) a vypisuje "activating" 
-  jednotky, které jsou instalovány z repozitářů, a tedy by je uživatel neměl měnit, sídlí v ''/usr/lib/systemd/system'', resp. uživatelské v ''/usr/lib/systemd/user''  +      * služba může zobrazit i nečekaně stav "unknown" [[https://bugzilla.redhat.com/show_bug.cgi?id=1073481|diskuze]] 
-  Vlastní systémové jsou standardně v ''/etc/systemd/system''. Uživatelské jsou v ''/etc/systemd/user'', které jsou ístupné pro všechny uživatele, a v ''~/.systemd/user''  pro každého uživatele zvlášť. +    * ''enable/disable''povolení či zakázání spouštění jednotky 
-  * ''systemctl daemon-reload'' +    * ''daemon-reload'' - aktualizace konfiguračních souborů jednotek 
-    * 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 
 +    * ''cat'' - zobrazí obsah souboru s jednotkou 
 +    * ''show'' - kompletní výpis parametrů jednotky (uživatelské + default) 
 +      * lze zjistit například čas startu procesu es parametr ''ExecMainStartTimestamp'' 
 +      * pro výpis konkrétního parametru lze použít argument ''-p <paramname>''
  
-  * WantedBy a RequiredBy, které říkají, kam se mají přidat závislosti při příkazu systemctl enable.  +  * umístění jednotek 
-    * Pokud chceme nějakou jednotku spouštět po startu, typicky nastavíme WantedBy=default.target, popř. WantedBy=multi-user.target.+    * jednotky, které jsou instalovány z repozitářů, a tedy by je uživatel neměl měnit, sídlí v  
 +      * systémové ''/usr/lib/systemd/system'' 
 +      * uživatelské ''/usr/lib/systemd/user''  
 +    * vlastní jednotky jsou standardně 
 +      * systémové ''/etc/systemd/system''.  
 +      * uživatelské ''/etc/systemd/user'' - jsou přístupné pro všechny uživatele 
 +      * osobní ''~/.systemd/user'' - pro každého uživatele zvlášť. 
 + 
 +===== 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 ''/etc/sysconfig/myservice.cfg'' obsahující jen ''OPTIONS="--bind=192.168.1.10"'' 
 +        * a pak použije jako: 
 +        <code> 
 +[Service] 
 +EnvironmentFile=/etc/sysconfig/myservice.cfg 
 +ExecStart=/usr/bin/myservice ${OPTIONS} 
 +        </code> 
 + 
 +  * install 
 +    * 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, popř. WantedBy=multi-user.target.
  
   * šablony - parametrické unity   * šablony - parametrické unity
     * Pokud v systemd pracujeme s jednotkou obsahující zavináč (ve tvaru jmeno@parametr.typ), je hledán soubor jmeno@.typ a pro odlišení konkrétní instance se použije parametr.     * Pokud v systemd pracujeme s jednotkou obsahující zavináč (ve tvaru jmeno@parametr.typ), je hledán soubor jmeno@.typ a pro odlišení konkrétní instance se použije parametr.
  
-  * hodnoty DefaultTimeoutStartSec a DefaultTimeoutStopSec přenastavit výchozí časy, nebo pro každou jednotku zvlášť pomocí TimeoutStartSec a TimeoutStopSec.  
  
-https://www.freedesktop.org/software/systemd/man/systemd.exec.html#OOMScoreAdjust= +===== Jednotka timer ===== 
 + 
 +  * ukládá se do souboru ''nazev.timer'', musí k ní vždy existovat service jednotka 
 +  * dva typy 
 +    *  Realtime timers 
 +      * spouštění na základě skutečného času jako událost kalendáře (obdoba cron) 
 +      * definuje se parametrem ''OnCalendar='' 
 +    * 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 ''OnTypeSec='' 
 + 
 +  * seznam aktivních časovačů lze vypsat příkazem 
 + 
 +  systemctl list-timers 
 +  NEXT                         LEFT       LAST                         PASSED       UNIT                         ACTIVATES 
 +  Sun 2017-12-03 11:00:59 CET  9min left  Sun 2017-12-03 10:01:46 CET  49min ago    anacron.timer                anacron.service 
 +  Sun 2017-12-03 11:09:00 CET  17min left Sun 2017-12-03 10:39:04 CET  12min ago    phpsessionclean.timer        phpsessionclean.service 
 +  Sun 2017-12-03 22:00:00 CET  11h left   Sun 2017-12-03 10:17:21 CET  34min ago    fstrim.timer                 fstrim.service 
 +  Mon 2017-12-04 01:02:19 CET  14h left   Sun 2017-12-03 10:17:17 CET  34min ago    apt-daily.timer              apt-daily.service 
 +  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      apt-daily-upgrade.service 
 +  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=/sbin/fstrim -a 
 + 
 +  systemctl cat fstrim.timer 
 +  [Unit] 
 +  Description=Discard unused blocks once a week 
 +  Documentation=man:fstrim 
 +   
 +  [Timer] 
 +  #OnCalendar=weekly 
 +  OnCalendar=Sun, 22:00 
 +  AccuracySec=1h 
 +  Persistent=true 
 +   
 +  [Install] 
 +  WantedBy=timers.target 
 + 
 +===== Zdroje ===== 
 + 
 +  * https://www.root.cz/clanky/nebojte-se-systemd-co-to-je-a-co-umi/ 
 +    * návod pro začátečníky tak nějak 
 +  * https://www.freedesktop.org/software/systemd/man/index.html 
 +    * kompletní detailní dokumentace k systemd 
 +    * zajímavé podstránky 
 +      * https://www.freedesktop.org/software/systemd/man/systemd.exec.html 
 +        * volby pro spouštění příkazů přes ExecStop, ExecStart, Exec*... 
 +      * https://www.freedesktop.org/software/systemd/man/systemd.service.html 
 +        * volby pro jednotky typu service 
 +      * https://www.freedesktop.org/software/systemd/man/systemd.unit.html 
 +        * volby pro jednotku 
 +  * http://jlk.fjfi.cvut.cz/arch/manpages/man/systemd.time.7.en 
 +    * zadávání času, například do timer jhednotky 
  
  
systemd.1484577387.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki