GNU/Linux >> Znalost Linux >  >> Linux

Deaktivujte službu systemd po době nečinnosti

Aktivace zásuvky v systemd může fungovat ve dvou režimech:

  • Accept=true :systemd udržuje naslouchací soket, přijímá každé příchozí připojení, vytváří nový proces pro každé připojení a předává mu vytvořený soket. Tento případ je triviální (každý proces se po dokončení ukončí).
  • Accept=false :systemd vytvoří naslouchací zásuvku a sleduje ji pro příchozí připojení. Jakmile jeden přijde, systemd spustí službu a předá jí naslouchací soket. Služba pak přijímá příchozí spojení a všechna následující. Systemd již nesleduje, co se děje na zásuvce, takže nemůže detekovat nečinnost.

V druhém případě si myslím, že jediným skutečně čistým řešením je upravit aplikaci tak, aby se ukončila, když je nějakou dobu nečinná. Pokud to nemůžete udělat, hrubým řešením by mohlo být nastavení cronu nebo systemd timer, aby službu jednou za hodinu zabil. To by mohla být rozumná aproximace, pokud se služba vytváří opravdu zřídka.

Všimněte si, že případ použití je pravděpodobně velmi vzácný. Proces sedící v poll()/select() čekající na připojení nespotřebovává žádný čas CPU, takže jediným zdrojem, který se v této situaci používá, je paměť. Pravděpodobně je jednodušší a efektivnější prostě nastavit nějaký swap a nechat jádro rozhodnout, zda se vyplatí celý proces držet v RAM nebo ne.


Linux
  1. Přidání nové služby do Linux systemd

  2. Proč Systemd zastavuje službu ihned po jejím spuštění?

  3. Linux – umístění skriptu Fsck?

  1. Spustit službu Systemd po automatickém připojení, ale poté, co k ní přistoupíte?

  2. Systemd:Použití After a Requires

  3. systemd - Dávám mé službě více argumentů

  1. Spravujte spouštění pomocí systemd

  2. Jak spustit službu systemd po přihlášení uživatele a zastavit ji před odhlášením uživatele

  3. aktivace soketu systemd vs xinetd