Inicie o serviço systemctl no login do usuário

4

Estou tentando criar um serviço que é executado no login do usuário.

Como usuário não root, criei um arquivo:

> cat ~/.local/share/systemd/user/voodoo.service

[Unit]
Description=User service test

[Service]
RemainAfterExit=yes
Type=simple
ExecStart=/bin/bash -c "touch /tmp/ok123"

[Install]
WantedBy=default.target

Mas o systemctl não o reconhece,

> systemctl --user restart voodoo.service
Failed to connect to bus: No such file or directory

Alguma idéia?

    
por daisy 01.01.2017 / 01:42

2 respostas

4

Dois, na verdade. Este é o mais provável.

O Ubuntu 15 mudou para o systemd para gerenciamento de serviços em todo o sistema. Mas o gerenciamento de serviços por usuário ainda era o domínio do upstart, e esse ainda era o caso em 16.04.

Então, naturalmente systemctl não encontrará uma instância por usuário de systemd para conversar. Note que systemctl não diz que não reconheceu o arquivo da unidade de serviço. Ele disse que não poderia se conectar ao "barramento" através do qual ele fala com a instância por usuário de systemd .

Leitura adicional

por 01.01.2017 / 03:00
3

Acho que você precisa enable do serviço:

systemctl --user enable voodoo.service
Created symlink /home/andreatsh/.config/systemd/user/default.target.wants/voodoo.service → /home/andreatsh/.local/share/systemd/user/voodoo.service

Como você pode ver, basta criar um link simbólico na pasta apropriada. Então eu corro:

systemctl --user restart voodoo.service 

e o serviço funcionou bem.

    
por 01.01.2017 / 03:00