J'ai créé un service systemd:
[Unit]
Description=My service
[Service]
Type=forking
ExecStart=/bin/sh $HOME/theFolder/run.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
Alias=mine.service
Je l'ai mis dans le dossier/etc/systemd/system et je l'ai nommé mine.service.
Si je lance Sudo service mine start
ça me donne :
Impossible de démarrer mine.service.Unit mine.service introuvable
--- MISE À JOUR -----
Je cours d'abord Sudo systemctl daemon-reload
et maintenant il ne me donne aucun message mais le service ne démarre toujours pas.
$HOME
pointe vers le répertoire personnel de l'utilisateur qui exécute le script. Les services Systemd sont démarrés avec root, il essaiera probablement de /root/theFolder/run.sh
. Utilisez des chemins absolus dans les fichiers de service.
Vous disposez également de l'option forking
. Cela est nécessaire pour le programme qui se déroule en arrière-plan, votre script fait-il cela? La plupart ne le font pas et si le vôtre ne le fait pas, vous devez supprimer cette option ou systemd attendra que votre script se termine pour le revendiquer comme démarré.
Les fichiers de service système qui pointent vers des scripts dans votre répertoire personnel sont déconseillés et peuvent poser un problème de sécurité. Puisqu'ils sont exécutés en tant que root, toute personne qui peut les modifier peut potentiellement obtenir un accès root à votre ordinateur. Il est préférable de copier le script dans /usr/local/bin
et assurez-vous qu'il est détenu et accessible en écriture uniquement par root pour arrêter cela. C'est également une bonne idée d'exécuter le script en tant qu'utilisateur non privilégié en utilisant le User=
et Group=
options dans le fichier de service.
Si vous souhaitez l'exécuter en tant qu'utilisateur, il est préférable de placer le fichier de service dans ~/.config/systemd/user/
et démarrez/activez-le avec systemctl --user enable yourservice && systemctl --user start yourservice
(notez, exécutez en tant qu'utilisateur non root). Voir this pour plus d'informations sur les fichiers de service utilisateur.