Usando o Cron para reiniciar um serviço de usuário do systemd

1

Eu criei um serviço --user no systemd para que um usuário não privilegiado possa gerenciar um serviço. Isso funciona bem. Eu queria reiniciar o serviço em uma determinada hora do dia, então criei uma tarefa cron no crontab dos usuários.

Estranhamente isso não funciona. O usuário pode reiniciar o serviço se eles forem executados:

systemctl --user restart myservice.service

No entanto, executar isso a partir do crontab não reinicia o serviço. Alguém sabe por quê?

Isso está rodando no Ubuntu 16.04.

    
por Magnus Jørgensen 10.10.2018 / 10:30

1 resposta

3

systemctl --user precisa falar com a sessão do D-Bus, que envolve a configuração de pelo menos DBUS_SESSION_BUS_ADDRESS e talvez XDG_RUNTIME_DIR ; tipicamente:

XDG_RUNTIME_DIR=/run/user/$(id -u)
DBUS_SESSION_BUS_ADDRESS=unix:path=${XDG_RUNTIME_DIR}/bus
export DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR
systemctl --user restart myservice.service

Você pode querer ver cronômetros systemd ao invés de cron para isso.

    
por 10.10.2018 / 10:34

Tags