GNU/Linux >> Tutoriels Linux >  >> Linux

Comment démarrer un service systemd après la connexion de l'utilisateur et l'arrêter avant la déconnexion de l'utilisateur

Utilisez systemd il inclut déjà la prise en charge des sessions utilisateur, en fait vous devriez déjà en dépendre (involontairement).

Créer le répertoire des services

mkdir -p $HOME/.local/share/systemd/user

Créez et modifiez un fichier de service (vim, gedit, geany - tout ce que vous voulez)

vim $HOME/.local/share/systemd/user/my.service

Il devrait à peu près ressembler à ceci, s'il s'agit d'un service permanent.

[Unit]
Description=My very own Service
[Service]
Type=simple
TimeoutStartSec=0
ExecStart=/path/to/start/script arguments
[Install]
WantedBy=default.target

Mais il semble que vous souhaitiez plutôt le déclencher une fois, puis être bon avec, alors utilisez plutôt une configuration unique comme celle-ci :

[Service]
Type=oneshot
RemainAfterExit=true
StandardOutput=journal
ExecStart=/path/to/start/script arguments
ExecStop=/path/to/stop/script arguments
[Install]
WantedBy=default.target

Cela suppose bien sûr que votre script soit exécutable, c'est-à-dire :

chmod a+x /path/to/start/script
chmod a+x /path/to/stop/script

Sinon, vous devrez ajouter le chemin d'accès à l'interpréteur respectif :

ExecStart=/bin/bash /path/to/start/script arguments

Maintenant, rechargez systemd (et reconnectez-vous pour tester)

systemctl --user enable my.service # enables the service
systemctl --user # should display your new unit in the list
journalctl --user should show the log

Si vous avez besoin de plus d'informations référez-vous à l'Arch-Wiki par exemple.

Vous pouvez étendre le comportement (si vous êtes root) à d'autres utilisateurs en définissant le service globalement. Pour ce faire, vous devez créer le fichier de service dans /usr/share/systemd/user/ pas dans $HOME/.local/share/systemd/user .


Linux
  1. Comment exécuter la commande avant la connexion de l'utilisateur sous Linux ?

  2. Comment arrêter et désactiver le service ClamAV à partir de CentOS ?

  3. Comment démarrer, arrêter et redémarrer le service Zimbra

  4. Comment arrêter le service systemd

  5. Dans le fichier de service systemd, comment puis-je dire une fois que l'USB est prêt ?

Comment démarrer, arrêter ou redémarrer Apache

Comment démarrer, arrêter ou redémarrer Nginx

Comment démarrer, arrêter et redémarrer des services sur Debian

Comment j'ai appris à arrêter de m'inquiéter et à aimer systemd

Comment démarrer, arrêter et redémarrer les services dans Debian 10

Comment démarrer, arrêter ou redémarrer les services réseau sur Rocky Linux 8