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 cours, sudo service mine start
cela 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.
systemctl daemon-reload
après avoir créé votre fichier d'unité?Réponses:
$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 le faire/root/theFolder/run.sh
. Utilisez des chemins absolus dans les fichiers de service.Vous avez également l'
forking
option définie. Ceci est nécessaire pour les programmes qui se fondent eux-mêmes, 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 également 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
/usr/local/bin
et de vous assurer 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 les optionsUser=
etGroup=
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
~/.config/systemd/user/
et de le démarrer / l'activer avecsystemctl --user enable yourservice && systemctl --user start yourservice
(notez, exécutez en tant qu'utilisateur non root). Voir ceci pour plus d'informations sur les fichiers de service utilisateur.la source
HOME=$HOME
dans le premier fichier d'environnement. Mais le service n'a pas pu démarrer, aucune erreur.