GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu nakonfigurovat službu systemd, aby se pravidelně restartovala?

Viděl jsem zde řešení, které se zdálo elegantní, i když trochu kruhové. Klíčovou myšlenkou je vytvořit jednorázovou službu spouštěnou časovačem, který restartuje další servis.

Pro časovač:

[Unit]
Description=Do something daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

Pro jednorázovou službu:

[Unit]
Description=Restart service

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl try-restart my_program.service

Pro jednorázovou službu na Ubuntu 16.04 LTS:

[Unit]
Description=Restart service

[Service]
Type=oneshot
ExecStart=/bin/systemctl try-restart my_program.service

Toto řešení vám umožňuje využít časovače systemd, včetně možnosti restartovat službu v určitou denní dobu, a ne až po uplynutí určité doby.


Pro systemd verzi>=229 existuje možnost nazvaná RuntimeMaxSec , který ukončí službu po jejím běhu po danou dobu.

např. Restartování každých 7 dní:

[Service]
Restart=always
RuntimeMaxSec=7d

Zdá se mi to elegantnější než zneužívání Type=notify a WatchdogSec .

systemd poskytuje čistý způsob přidávání a přepisování direktiv v souborech jednotek systemd poskytovaných dodavateli. Drop-In jednotky jsou popsány v man systemd.unit. Pokud byste například chtěli pravidelně restartovat službu foo poskytovanou balíčkem, vytvořili byste soubor s názvem /etc/systemd/system/foo.service.d/periodic-restart.conf . Obsah by byl takový, jak je uvedeno výše. Potom:

 systemctl daemon-reload
 systemctl restart foo

Můžete potvrdit, že jednotka Drop-In byla načtena, protože bude hlášena ve výstupu stavu:

 systemctl status

Nakonec můžete potvrdit, že direktiva byla zahrnuta, vyhledáním systemctl show výstup:

 systemctl show foo.service | grep RuntimeMax

Direktiva hlášená systemctl show bude "RuntimeMaxUSec"


Linux
  1. Jak nakonfigurovat Systemd tak, aby jednoduchý skript pomocí Standardio převedl do síťové služby?

  2. Jak použít Systemd k restartování služby, když je vypnutá?

  3. Jak přesměrovat výstup služby systemd do souboru

  1. Jak spravovat služby Systemd pomocí Systemctl v systému Linux

  2. Jak nainstalovat a nakonfigurovat Dovecot

  3. Jak zastavit službu systemd

  1. Jak používat příkaz Systemctl ke správě služeb Systemd

  2. Jak vytvořit službu Systemd v Linuxu

  3. Jak mohu restartovat služby na serverech cPanel?