systemd sd-bus API를 사용하여 루트로 실행하는 대신 프로그램 내에서 사용자의 systemd 서비스 파일 상태를 시작/중지/확인하려고 합니다.
상태를 결정하는 예로 넘어가겠습니다. 명령줄에서 이 내용을 테스트했습니다. 환경을 준비하는 데 약간의 진전이 있었습니다.
$ export XDG_RUNTIME_DIR=/run/user/$(id -u)
그리고
$ export $(dbus-launch)
온라인 검색 중 다양한 출처에서 찾았습니다. 특정 사용자와 대화할 때:
$ busctl --user --verbose get-property \
org.freedesktop.systemd1 \
/org/freedesktop/systemd1/unit/myservice \
org.freedesktop.systemd1.Unit ActiveState
결과:
Process org.freedesktop.systemd1 exited with status 1
이전에는 "권한 거부"와 같은 것이었습니다. 사용자 플래그 없이 루트로 실행하면 원하는 출력이 제공됩니다.
내가 놓친 부분에 대한 힌트가 있는 사람이 있나요?