Cron을 사용하여 시스템 사용자 서비스 다시 시작

Cron을 사용하여 시스템 사용자 서비스 다시 시작

권한이 없는 사용자가 서비스를 관리할 수 있도록 systemd에 --user 서비스를 만들었습니다. 이것은 훌륭하게 작동합니다. 하루 중 정해진 시간에 서비스를 다시 시작하고 싶어서 사용자의 crontab에 cron 작업을 생성했습니다.

이상하게도 이것이 작동하지 않습니다. 사용자가 다음 명령을 실행하면 서비스를 다시 시작할 수 있습니다.

systemctl --user restart myservice.service

그러나 crontab에서 이 명령을 실행해도 서비스가 다시 시작되지는 않습니다. 이유를 아는 사람 있나요?

우분투 16.04에서 실행됩니다.

답변1

systemctl --userDBUS_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에서 해결되었습니다.

관련 정보