GNU/Linux >> Tutoriels Linux >  >> Linux

Désactiver un service systemd après un temps d'inactivité

L'activation du socket dans systemd peut fonctionner selon deux modes :

  • Accept=true :systemd conserve le socket d'écoute, accepte chaque connexion entrante, génère un nouveau processus pour chaque connexion et lui transmet le socket établi. Ce cas est trivial (chaque processus se termine lorsqu'il est terminé).
  • Accept=false :systemd crée le socket d'écoute et le surveille pour une connexion entrante. Dès que quelqu'un arrive, systemd génère le service et lui transmet le socket d'écoute. Le service accepte alors la connexion entrante et toutes les suivantes. Systemd ne suit plus ce qui se passe sur le socket, il ne peut donc pas détecter l'inactivité.

Dans ce dernier cas, je pense que la seule solution vraiment propre est de modifier l'application pour qu'elle se ferme lorsqu'elle est inactive pendant un certain temps. Si vous ne pouvez pas le faire, une solution de contournement grossière pourrait consister à configurer cron ou une minuterie systemd pour tuer le service une fois par heure. Cela pourrait être une approximation raisonnable si le service n'est généré que très rarement.

Notez que le cas d'utilisation est probablement assez rare. Un processus assis dans poll()/select() en attente d'une connexion ne consomme pas de temps CPU, donc la seule ressource utilisée dans cette situation est la mémoire. Il est probablement à la fois plus facile et plus efficace de simplement configurer un swap et de laisser le noyau décider s'il vaut la peine de garder le processus en RAM tout le temps ou non.


Linux
  1. Ajouter un nouveau service à Linux systemd

  2. Pourquoi Systemd arrête-t-il le service immédiatement après son démarrage ?

  3. Linux - Emplacement du script Fsck ?

  4. Exécuter le service Systemd après le montage automatique, mais après y avoir accédé ?

  5. Comment arrêter le service systemd

Commandes Systemctl pour gérer le service Systemd

Utiliser les fonctionnalités de systemd pour sécuriser les services

Gestion des cgroups avec systemd

Systemd :Utiliser à la fois After et Requires

systemd - Donner à mon service plusieurs arguments

activation de socket systemd vs xinetd