그래서 저는 다음과 같은 시나리오를 가지고 있습니다: user-a
systemd 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