권한이 없는 사용자가 서비스를 관리할 수 있도록 systemd에 --user 서비스를 만들었습니다. 이것은 훌륭하게 작동합니다. 하루 중 정해진 시간에 서비스를 다시 시작하고 싶어서 사용자의 crontab에 cron 작업을 생성했습니다.
이상하게도 이것이 작동하지 않습니다. 사용자가 다음 명령을 실행하면 서비스를 다시 시작할 수 있습니다.
systemctl --user restart myservice.service
그러나 crontab에서 이 명령을 실행해도 서비스가 다시 시작되지는 않습니다. 이유를 아는 사람 있나요?
우분투 16.04에서 실행됩니다.
답변1
systemctl --user
DBUS_SESSION_BUS_ADDRESS
최소한 설정 이 포함된 D-Bus 세션과 대화해야 합니다 XDG_RUNTIME_DIR
.
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
이렇게 하려면 cron 대신 systemd 타이머를 살펴보는 것이 좋습니다.
답변2
같은 질문.
추가하다;
이 문제는 Lubuntu 22.04에서 해결되었습니다.