web-dev-qa-db-fra.com

Que signifie "Échec de l'exécution de l'opération: argument invalide" lors de l'exécution de systemctl enable?

J'ai créé un fichier de service systemd (spécifiquement pour svnserve; j'utilise en fait l'exemple ci-dessous https://stackoverflow.com/a/40584047/464087 ), et lorsque je l'active, en tapant

Sudo systemctl enable svnserve

Je reçois la réponse 

Failed to execute operation: Invalid argument

Fonctionnement 

Sudo systemctl status svnserve

les rendements

● svnserve.service - Subversion protocol daemon
   Loaded: loaded (/etc/systemd/system/svnserve.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

ne me donne aucune idée de ce qui ne va pas. Je peux alors démarrer le service sans erreur, et il semble fonctionner normalement, et après avoir démarré le statut systemctl, je n'ai toujours aucune idée de ce qui ne va pas:

● svnserve.service - Subversion protocol daemon
   Loaded: loaded (/etc/systemd/system/svnserve.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-01-09 22:10:14 UTC; 6s ago
  Process: 9677 ExecStart=/usr/bin/svnserve $DAEMON_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 9678 (svnserve)
    Tasks: 1
   Memory: 964.0K
      CPU: 2ms
   CGroup: /system.slice/svnserve.service
           └─9678 /usr/bin/svnserve --daemon --pid-file /run/svnserve/svnserve.pid --root /srv/svn/repos --log-file /var/log/svnserve/svnserve.log

Alors, que signifie ce message d'erreur? Et à quel niveau de choses un "argument invalide" est-il censé s'appliquer? Un argument pour la commande svnserve? Certains biens dans le fichier de service? Un argument de ligne de commande à la commande servicectl elle-même?

FWIW c'est sur un serveur Ubuntu 16.04 LTS.

6
EricS

J'ai eu un cas similaire, dans mon cas le problème est parti après le retrait de la ligne Alias ​​de la section [Installer]. Merci à Anton dans un autre fil de discussion: https://stackoverflow.com/a/34978908/2711456 - Le nom d'alias peut être différent du nom du service.

8
T .

J'ai vécu exactement la même chose. La suppression de "Alias" fonctionne, mais en réalité, alias peut avoir le même nom que le fichier de service.

La raison pour laquelle cela ne fonctionne pas est liée au répertoire dans lequel le fichier de service est placé. 

Ce que fait systemd, c’est créer un alias dans le répertoire "/ etc/systemd/system" et dans le répertoire cible qui souhaite ce service. Si le fichier de service d'origine se trouve déjà dans "/ etc/systemd/system", lorsque systemd tente d'activer ce service, l'alias ne peut pas être créé. 

La solution met le fichier de service dans le répertoire "/ lib/systemd/system /" et cela fonctionnera.

2
blackpiglet

vous essayez ceci, j'étais résolu le:

  1. cd /etc/systemd/system/multi-user.target.wants

  2. ls

  3. erreur de service de recherche de nom "Échec de l'exécution de l'opération: argument non valide"

  4. rm -rf votrenom.service

  5. cd/etc/systemd/system /

  6. nano votrenom.service

éditez votre service de contenu (peut-être votre erreur de contenu (vérification de symboy [], ... bla..bla)

==> enregistrez-le

  1. systemctl daemon-reload

  2. systemctl activer votre nom.service

bonne chance!!!

2
Oanh Le Thi

Ce que j'ai aussi trouvé, c'est le bogue avec des commentaires (au moins sur systemd 219). Si vous avez un commentaire après un code de fichier de service, il ne pourra pas l'activer. Amenez donc le commentaire dans la nouvelle chaîne ou supprimez-le. J'ai testé et cela fonctionne pour moi:

WantedBy=multi-user.target
# runs in init 3 (multi-user mode for linux)

celui-ci ne fonctionnera pas:

WantedBy=multi-user.target  # runs in init 3 (multi-user mode for linux)

quelques discussions sont ici: https://github.com/rabbitmq/rabbitmq-server/issues/1422

1
Evgeny

Le symbole CR est requis après la dernière ligne de votre fichier /etc/systemd/system/youunit.service ..__ Vérifiez-le et supprimez /etc/systemd/system/multi-user.target.wants/youunit.service. Réessayez ensuite systemctl enable youunit.

1
Joe Go