user-systemctl을 루트로 사용하는 방법은 무엇입니까?

user-systemctl을 루트로 사용하는 방법은 무엇입니까?

사용자 셸에 로그인하지 않고 루트 셸에서 사용자 서비스를 시작하고 싶습니다.

다음 명령을 시도했지만 실패했습니다.

#> su - username -c "systemctl --user"
Failed to connect to bus: No such file or directory

목표를 달성하려면 어떻게 해야 하나요?

답변1

다음 명령은 작동하는 것 같지만 다소 불편해 보입니다.

su - username --shell=/bin/sh -c 'export XDG_RUNTIME_DIR=/run/user/$(id -u); systemctl --user'

답변2

다음은 나에게 효과적이었습니다.

runuser -u USER -- systemctl --user start USER.SERVICE

답변3

나는 간단한 것을 사용하고 있습니다

# systemctl start servicename@username

예를 들어

# systemctl start tmux@e

글로벌 시스템 관리를 위해 자체 tmux 세션을 시작하는 데 사용됩니다.

답변4

다른 답변의 모든 부분을 하나로 모으고 ( runuser대신 권장 답변을 사용하여 su) 현재 Debian/Ubuntu에서 작동합니다.

runuser username -c 'env XDG_RUNTIME_DIR=$(id -u) systemctl --user'

관련 정보