다른 사용자의 사용자 서비스를 루트로 다시 시작하는 방법은 무엇입니까?

다른 사용자의 사용자 서비스를 루트로 다시 시작하는 방법은 무엇입니까?

그래서 저는 다음과 같은 시나리오를 가지고 있습니다: user-asystemd user service를 실행 중입니다 user-a-service. 저는 루트이고 해당 사용자 서비스를 다시 시작하고 싶습니다. 그렇게 할 방법을 찾을 수 없습니다. 기본적으로 나는 이것을 원한다:

systemctl --user user-a restart user-a-service

제발 이러지 마세요~ 아니다루트가 아닌 특정 사용자로 실행되는 일반 시스템 서비스이지만 실제 사용자 서비스입니다.

답변1

이를 수행하는 유일한 방법은 systemctl해당 사용자로 실행하고 적절한 환경 변수를 사용하여 D-Bus 사용자 버스 또는 개인 시스템 소켓을 찾을 수 있도록 하는 것입니다.

sudo -u user-a XDG_RUNTIME_DIR="/run/user/$(id -u user-a)" systemctl --user restart user-a-service

--machine최신 systemd(v248)에서는 특수한 호스트 이름을 지정하여 루프백 연결에 사용할 수 있습니다 .host. 자동으로 PAM(login)을 호출하여 환경 설정을 처리합니다.

systemctl --machine [email protected] --user restart user-a-service

관련 정보