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
.
Pour les personnes de Google:
Sudo systemd-analyze verify NAME.service
/etc/systemd/system/*.service
Sudo systemctl daemon-reload
après modificationsLe 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
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.