J'ai une machine Fedora 23.
J'ai un script bash de synchronisation de répertoire / fichier qui synchronise mon répertoire local / home avec un répertoire distant (sur une machine NAS). Je l'exécute manuellement mais je voudrais créer un service systemd et le rendre plus flexible, car d'autres personnes utilisent mon PC avec leurs propres informations d'identification d'utilisateur, je voudrais savoir quand un utilisateur est connecté et démarrer mon service par la suite.
Puis-je faire quelque chose à partir du fichier systemd de mon service ou devrai-je vérifier cela à partir de mon code dans le script?
Je dois seulement m'assurer d'avoir accès aux variables d'environnement (comme $ USER) et l'exécuter en tant que service.
Ma principale source de documentation est ce lien https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html
systemctl --user
travail sur F23?76 loaded units listed
..bashrc
à la connexion, puis il écoute le signal de déconnexion de Gnome et s'arrête.Réponses:
Utilisez systemd, il inclut déjà la prise en charge des sessions utilisateur, en fait, vous devriez déjà en dépendre (sans le savoir).
Créer le répertoire des services
Créer éditer un fichier de service (vim, gedit, geany - tout ce que vous voulez)
Cela devrait à peu près ressembler à ceci, s'il s'agit d'un service permanent.
Mais il semble que vous souhaitiez plutôt le déclencher une fois, alors soyez bon avec lui, alors utilisez plutôt une configuration one-shot comme celle-ci:
Cela suppose bien sûr que votre script soit exécutable, c'est-à-dire:
Sinon, vous devrez ajouter le chemin d'accès à l'interpréteur respectif:
Rechargez maintenant systemd (et reconnectez-vous pour des raisons de test)
Si vous avez besoin de plus d'informations, reportez-vous à l' Arch-Wiki par exemple. Ce fil askubuntu a diverses idées, y compris d'ailleurs la mienne.
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 .
la source
Je le sais depuis quelques années, mais la réponse d'Anx m'a juste aidé. Donc, je suppose que c'est toujours pertinent. De plus, c'est plus un commentaire, mais je n'ai pas ce privilège donc je le poste comme une "réponse". À tout prix...
Sous Linux Mint 19, je ne pouvais pas "activer" le service lorsque le script se trouvait dans '$ HOME / .local / share / systemd / user'. Tenter de le faire entraînait toujours une erreur. Je pourrais cependant le démarrer très bien à partir du répertoire '$ HOME / .local / share / systemd / user'. Après avoir déplacé le script dans '/ usr / share / systemd / user /', systemd m'a permis de l'activer sans problème.
la source