Je ne peux pas activer ou désactiver un service utilisateur: échec de l'exécution de l'opération: aucun fichier ou répertoire de ce type

18

Je veux déboguer / tester un programme dans eclipse qui utilise un serveur Redis, j'ai donc décidé de transformer le serveur en service utilisateur pour avoir le privilège de l'exécuter. Ce qui me dérange, c'est que je peux démarrer ou arrêter le service mais pas l'activer / le désactiver.

L'erreur que j'obtiens est:

Failed to execute operation: No such file or directory

Original / usr / lib / systemd / system:

[Unit]
Description=Advanced key-value store
After=network.target

[Service]
User=arkos
ExecStart=/usr/bin/redis-server /etc/arkos/arkos-redis.conf
ExecStop=/usr/bin/redis-cli shutdown

[Install]
WantedBy=multi-user.target

Modifié et déplacé vers / usr / lib / systemd / user:

[Unit]
Description=Advanced key-value store

[Service]
ExecStart=/usr/bin/redis-server /etc/arkos/arkos-redis.conf
ExecStop=/usr/bin/redis-cli shutdown

[Install]
WantedBy=default.target

Statut Systemctl:

�� arkos-redis.service - Advanced key-value store
   Loaded: loaded (/usr/lib/systemd/user/arkos-redis.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2015-08-25 09:19:25 UTC; 1min 55s ago
  Process: 644 ExecStop=/usr/bin/redis-cli shutdown (code=exited, status=1/FAILURE)
 Main PID: 736 (redis-server)
   CGroup: /user.slice/user-1000.slice/[email protected]/arkos-redis.service
           ������736 /usr/bin/redis-server *:0                        

Aug 25 09:19:25 arkos-vagrant redis-server[736]: |    `-._`-._        _.-'_.-'    |
Aug 25 09:19:25 arkos-vagrant redis-server[736]: `-._    `-._`-.__.-'_.-'    _.-'
Aug 25 09:19:25 arkos-vagrant redis-server[736]: `-._    `-.__.-'    _.-'
Aug 25 09:19:25 arkos-vagrant redis-server[736]: `-._        _.-'
Aug 25 09:19:25 arkos-vagrant redis-server[736]: `-.__.-'
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.471 # Server started, Redis version 3.0.3
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.472 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.472 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.472 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.472 * The server is now ready to accept connections at /tmp/arkos-redis.sock

Journalctl:

Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.470 # You requested maxclients of 10000 requiring at least 10032 max file descrip
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.470 # Redis can't set maximum open files to 10032 because of OS error: Operation 
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.470 # Current maximum open files is 4096. maxclients has been reduced to 4064 to 
Aug 25 09:19:25 arkos-vagrant redis-server[736]: _._
Aug 25 09:19:25 arkos-vagrant redis-server[736]: _.-``__ ''-._
Aug 25 09:19:25 arkos-vagrant redis-server[736]: _.-``    `.  `_.  ''-._           Redis 3.0.3 (00000000/0) 64 bit
Aug 25 09:19:25 arkos-vagrant redis-server[736]: .-`` .-```.  ```\/    _.,_ ''-._
Aug 25 09:19:25 arkos-vagrant redis-server[736]: (    '      ,       .-`  | `,    )     Running in standalone mode
Aug 25 09:19:25 arkos-vagrant redis-server[736]: |`-._`-...-` __...-.``-._|'` _.-'|     Port: 0
Aug 25 09:19:25 arkos-vagrant redis-server[736]: |    `-._   `._    /     _.-'    |     PID: 736
Aug 25 09:19:25 arkos-vagrant redis-server[736]: `-._    `-._  `-./  _.-'    _.-'
Aug 25 09:19:25 arkos-vagrant redis-server[736]: |`-._`-._    `-.__.-'    _.-'_.-'|
Aug 25 09:19:25 arkos-vagrant redis-server[736]: |    `-._`-._        _.-'_.-'    |           http://redis.io
Aug 25 09:19:25 arkos-vagrant redis-server[736]: `-._    `-._`-.__.-'_.-'    _.-'
Aug 25 09:19:25 arkos-vagrant redis-server[736]: |`-._`-._    `-.__.-'    _.-'_.-'|
Aug 25 09:19:25 arkos-vagrant redis-server[736]: |    `-._`-._        _.-'_.-'    |
Aug 25 09:19:25 arkos-vagrant redis-server[736]: `-._    `-._`-.__.-'_.-'    _.-'
Aug 25 09:19:25 arkos-vagrant redis-server[736]: `-._    `-.__.-'    _.-'
Aug 25 09:19:25 arkos-vagrant redis-server[736]: `-._        _.-'
Aug 25 09:19:25 arkos-vagrant redis-server[736]: `-.__.-'
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.471 # Server started, Redis version 3.0.3
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.472 # WARNING overcommit_memory is set to 0! Background save may fail under low m
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.472 # WARNING you have Transparent Huge Pages (THP) support enabled in your kerne
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.472 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sy
Aug 25 09:19:25 arkos-vagrant redis-server[736]: 736:M 25 Aug 09:19:25.472 * The server is now ready to accept connections at /tmp/arkos-redis.sock
Folatt
la source
Avez-vous couru systemctl daemon-reloadaprès avoir déplacé / édité les fichiers?
André Borie

Réponses:

4

Dans mon cas, je plaçais mes fichiers d'unité systemd directement sous des /etc/systemd/system/...dossiers. Les a déplacés à la /lib/systemd/systemplace et cela a résolu le problème avec les commandes systemctl enable / disable.

Alex
la source
2
Cela fait longtemps que je n'ai pas eu ce problème, mais je me souviens que quelque chose comme ça était la solution.
Folatt
1
dans mycase, j'ai copié de lib en etc et cela a fonctionné
Staline Gino
21

Problème de lien symbolique?

J'ai eu un message d'erreur similaire lors de l'utilisation de liens symboliques.

Apparemment, systemd ne suit pas les liens symboliques, la solution consiste simplement à copier ou déplacer le fichier.

Service aux utilisateurs?

Je crois que vous devez ajouter --userà la ligne de commande pour les unités dans user/:

sudo systemctl --user enable arkos-redis.service
Benoit Blanchon
la source
2
C'était aussi le problème du lien symbolique ici.
cweiske
2
Intéressant. Il a suivi le lien symbolique lorsque j'ai startédité le service, mais enablene l'a pas fait
Michael Mrozek
Vous avez raison, le lien symbolique n'a pas fonctionné. J'ai fini par utiliser un lien dur à la place.
Bryce Guinta
1
Curieuse. J'utilise un lien symbolique, car il me permet de gérer le fichier de service dans le cadre de son projet, et c'est bien pour démarrer et arrêter, mais pas pour l'activer. Limitation très étrange.
rosuav
Ici commence la discussion sur la raison pour laquelle autoriser ou non les liens symboliques: bugzilla.redhat.com/show_bug.cgi?id=955379#c14
jgomo3
1

Essayer:

  • sudo touch /etc/init.d/arkos-redis

J'ai eu le même problème. Si cela ne fonctionne pas:

  • sudo strace systemctl enable arkos-redis

Recherchez où le dernier échec se produit.

TJR
la source
0

J'ai eu le même problème sur Fedora 29.

Remplacer: After=network.target
par: Requires=network.target

C'est incroyablement frustrant car le fichier est clairement là mais rien ne semble vouloir le voir. Il n'y a pas non plus d'échec de l'analyse systemd. Cela montre juste que «mauvais» sous systemctl --list-unit-files.

user3559338
la source
-1

Reçu cette erreur sur Redhat lorsque le fichier d'unité était vide

Cannot send after transport endpoint shutdown
Ben DeMott
la source