y a-t-il quelque chose comme un démon par user?

J'ai besoin d'exécuter des process d'arrière-plan qui vivent tant que je suis connecté avec un certain user.

Existe-t-il quelque chose comme un démon par user? Je ne connais que les démons globaux qui vivent depuis le démarrage de l'ordinateur jusqu'à l'arrêt (ou le démarrage / l'arrêt manuel).

pour l'instant j'ai fait un script qui vérifie si le process existe déjà et crée le process si ce n'est pas le cas. Ce script est ensuite exécuté avec la command nohup de mon .profile . De cette façon, le process démarre au démarrage et n'est lancé qu'une seule fois (même si plusieurs termes rxvt vont et viennent). Pourtant, il ne se fait jamais tuer après que je me connecte (ce qui n'est pas un désastre mais il est plus propre de mettre fin au process).

systemd permet aux users d'exécuter leurs propres instances systemd pour gérer les démons privés.

Si vous avez déjà installé systemd, il vous suffit de lancer systemd --user et de gérer vos services en exécutant systemctl --user . Les services user seront recherchés dans ~/.config/systemd/user .

Par défaut, systemd va supprimer les services user lors de la déconnection (comme demandé). Ce comportement peut être modifié en activant un user avec la command loginctl --enable-linger $USER .

Les informations Mor peuvent être trouvées sur la page ArchWiki .

Le service dbus est destiné à precicely que … ok, il peut être utilisé pour precicely que :-). Le deamon dbus par user est démarré lorsqu'un user se connecte à un environnement de bureau et se termine lorsque l'user se déconnecte (voir la page man de dbus-launch et l'option --exit-with-session ). Un service dbus peut être démarré avec l'instance dbus ou lorsque l'interface du service est appelée la première fois via dbus. Chaque user peut avoir ses propres spécifications de services dbus, définies dans un directory caché dans la maison des users, ou globalement dans /etc Voir la page d'accueil de dbus sur freedesktop pour beaucoup de documentation et d'implémentation de reference.

Je n'utilise que des dissortingbutions basées sur Debian ces jours-ci. Tous ceux qui ont des scripts dans /etc/X11/Xsession.d qui modifient très souvent une string qui à la fin sera évaluée comme la command qui démarre l'environnement de bureau sélectionné. Il existe un tel script pour dbus, qui fait précéder la command du dbus-launch dbus wrapper. Ce wrapper lance un dbus-server et au less sur vanilla Debian (et je suis prêt à dire "sur toutes les dissortingbutions basées sur Debian") dbus-launch l'option --exit-with-session .

Vous devriez être capable d'encapsuler les process que vous voulez exécuter pendant qu'un user est connecté à un service dbus et IIRC dbus prend automatiquement soin de terminer ses services avant de quitter.

Si vous utilisez BASH comme shell, vous pouvez essayer de faire une détection dans ~ / .bash_logout et arrêter le process en cours.

Ce que vous cherchez probablement à plus long terme est d'interagir (par exemple via D-Bus) avec quelque chose comme ConsoleKit ou le logind de systemd.