J'ai une machine Fedora 23.
J'ai un répertoire/une synchronisation de fichier bash qui synchronise mon répertoire local/domestique à un répertoire distant (dans A NAS machine). Je l'exécute manuellement mais je voudrais créer un service SystemD et Rendez-le plus flexible, car d'autres personnes utilisent mon ordinateur avec leurs propres informations d'identification de l'utilisateur, je voudrais savoir quand un utilisateur est connecté et démarre mon service après.
Y a-t-il quelque chose que je peux faire dans le fichier SystemD de mon service ou devrai-je vérifier cela de mon code dans le script?
Il suffit de vous assurer que j'ai accès à des variables d'environnement (comme US $ USER) et de 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-maning_services_with_systemd-unit_files.html
Utilisez SystemD Cela inclut déjà un support pour les sessions utilisateur, vous devez en faire déjà dépendre de celui-ci (involontairement).
Créez le répertoire de service
mkdir -p $HOME/.local/share/systemd/user
Créez Modifier un fichier de service (Vim, Gedit, Geany - Quoi que vous souhaitiez)
vim $HOME/.local/share/systemd/user/my.service
Il devrait ressembler à peu près à 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 préférez que vous souhaitiez le déclencher une fois, alors soyez bon avec elle, alors utilisez plutôt une configuration de référence 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 est exécutable, c'est-à-dire
chmod a+x /path/to/start/script
chmod a+x /path/to/stop/script
Sinon, vous auriez besoin de préparer le chemin de l'interprète respectif:
ExecStart=/bin/bash /path/to/start/script arguments
Maintenant rechargez SystemD (et ré-identifiant pour des mesures de test)
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, reportez-vous à la section Arch-wiki par exemple. Ceci Le fil d'askubuntu a diverses idées, notamment les miennes.
Vous pouvez étendre le comportement (si vous êtes root) à d'autres utilisateurs en définissant le service mondial. Pour ce faire, vous devez créer le fichier de service dans USR/Share/Systemd/User / Pas in $ Accueil/.Local/Share/Systemd/Utilisateur.