web-dev-qa-db-fra.com

systemd n'a apparemment pas trouvé le fichier .service

J'ai rassemblé un fichier foo.service pour notre service foo qui fonctionne comme un démon. Le service fonctionne correctement lorsque j'exécute systemctl start foo (et stop) mais systemtcl enable foo résulte en Failed to issue method call: Invalid argument. Le fichier d'unité est placé dans /etc/systemd/system/foo.service, et dispose des autorisations 0755. La définition de systemd pour déboguer et exécuter enable donne

Looking for unit files in (highest priority first):`
    /etc/systemd/system
    /run/systemd/system
    /usr/local/lib/systemd/system
    /usr/lib/systemd/system
Looking for SysV init scripts in:
    /etc/rc.d/init.d
Looking for SysV rcN.d links in:
    /etc/rd.c
Failed to issue method call: Invalid argument

Googler autour, il semble comme systemctl ne trouve pas le fichier .service. Existe-t-il un moyen de vérifier cela? Si oui, comment puis-je résoudre ce problème? Avez-vous d'autres idées sur ce qui pourrait mal se passer? Y a-t-il plus de débogage que je peux activer? Les informations de débogage fournies ne m'aident pas vraiment à réduire le problème.

foo.service ressemble à:

[Unit]
Description=Blah Blah Blah

[Service]
ExecStart=/usr/bar/doof/foo
Type=simple
PIDFile=/var/run/foo.pid

[Install]
WantedBy=multi-user.target,graphical.target

EDIT: Oui, j'ai exécuté systemctl daemon-reload.

11
user3255510

Pour les personnes de Google:

  • Validez avec Sudo systemd-analyze verify NAME.service
  • Lorsque vous utilisez un lien symbolique, assurez-vous qu'il utilise un chemin absolu
  • Assurez-vous que le nom ressemble à /etc/systemd/system/*.service
  • Faire Sudo systemctl daemon-reload après modifications
24
Mark

Le problème dans mon cas était que le fichier était un lien symbolique depuis une autre partition et systemd ne le supporte pas.

Unit files have to reside on a partition that is mounted at the moment the Host PID 1 is invoked. i.e. either on the root partition or some other partition that the initrd premounts.

Je réponds à une vieille question parce que c'est un résultat de premier plan en cherchant sur le problème et cela pourrait aider quelqu'un

10
M4ver1k

L'erreur est due au fait que deux cibles sont spécifiées pour WantedBy. Il suffit de mentionner de cette manière:

[Install]
WantedBy=multi-user.target

Je ne sais vraiment pas comment nous pouvons lui spécifier deux cibles.

2
ASB