Não consigo ativar ou desativar um serviço de usuário: Falha ao executar a operação: esse arquivo ou diretório não existe

18

Quero depurar / testar um programa no eclipse que usa um servidor Redis, por isso decidi transformar o servidor em um serviço de usuário para ter o privilégio de executá-lo. O que me incomoda é que eu posso iniciar ou parar o serviço, mas não ativá-lo / desativá-lo.

O erro que recebo é:

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

Editado e movido para / 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

Status do 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
fonte
Você executou systemctl daemon-reloadapós mover / editar os arquivos?
André Borie

Respostas:

4

No meu caso, eu estava colocando meus arquivos da unidade systemd diretamente em /etc/systemd/system/...pastas. Em /lib/systemd/systemvez disso, eles foram movidos e isso resolveu o problema com os comandos de ativação / desativação do systemctl.

Alex
fonte
2
Já faz muito tempo desde que tive esse problema, mas lembro-me de que algo assim é a solução.
Folatt
11
no mycase, copiei da lib para etc e funcionou
Stalin Gino
21

Problema com o link simbólico?

Recebi uma mensagem de erro semelhante ao usar links simbólicos.

Aparentemente, systemd não segue links simbólicos, a solução é simplesmente copiar ou mover o arquivo.

Serviço de usuário?

Eu acredito que você precisa adicionar --userà linha de comando as unidades em user/:

sudo systemctl --user enable arkos-redis.service
Benoit Blanchon
fonte
2
Também foi o problema do link simbólico aqui.
Cweiske 13/05
2
Interessante. Ele seguiu o link simbólico quando eu starteditei o serviço, mas enablenão o fez
Michael Mrozek
Você está certo, o link simbólico não funcionou. Acabei usando um link físico.
Bryce Guinta
11
Curioso. Estou usando um link simbólico, porque ele permite gerenciar o arquivo de serviço como parte de seu projeto, e é bom para iniciar e parar, mas não para ativar. Limitação muito estranha.
rosuav 13/03
Aqui começa a discussão sobre por que permitir ou não links simbólicos: bugzilla.redhat.com/show_bug.cgi?id=955379#c14
jgomo3 29/03
1

Experimentar:

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

Eu tive o mesmo problema. Se isso não funcionar:

  • sudo strace systemctl enable arkos-redis

Procure onde ocorre a última falha.

TJR
fonte
0

Eu tive o mesmo problema no Fedora 29.

Substituir: por After=network.target
: Requires=network.target

É incrivelmente frustrante porque o arquivo está claramente lá, mas nada parece querer vê-lo. Também não há falha na análise do sistema. Apenas mostra como "ruim" abaixo systemctl --list-unit-files.

user3559338
fonte
-1

Recebeu este erro no Redhat quando o arquivo da unidade estava vazio

Cannot send after transport endpoint shutdown
Ben DeMott
fonte