루트 사용자로 systemd 사용자 서비스를 중지합니다.

루트 사용자로 systemd 사용자 서비스를 중지합니다.

[email protected]서버의 모든 사용자가 시작할 수 있는 시스템이 있습니다 .systemd --user start [email protected]

루트로서 유지 관리를 수행하는 동안 모든 사용자에 대한 서비스를 중지하고 싶습니다.

나는 갈등을 통해서도 체계화된 인간에게서 길을 찾지 못했습니다. 루트로 사용자 서비스를 중지하는 방법이 있습니까?

답변1

--user루트로서 systemd는 및 플래그 조합을 사용하여 사용자 서비스에 대한 작업 수행을 지원합니다 --machine.

예를 들어

systemctl --user --machine=<user>@.host <command> <service>

또는 (localhost에서)로 단축할 수 있습니다.

systemctl --user --machine=<user>@ <command> <service>

systemctl --user --machine=jtingiris@ stop a-user.service

이 내용은 다음과 같이 기록됩니다.man 1 systemctl...

-M,--machine=

로컬 컨테이너에서 작업을 수행합니다. 연결할 컨테이너의 이름을 지정합니다. 선택적으로 @연결할 사용자 이름과 구분 기호 ""가 앞에 붙습니다. 컨테이너 이름 대신 특수 문자열 " .host"을 사용하면 로컬 시스템에 대한 연결이 설정됩니다(이는 특정 사용자의 사용자 버스에 연결하는 데 유용합니다: " "). " " 구문을 사용하지 않으면 루트 사용자로 연결됩니다. " " 구문을 사용하는 경우 왼쪽 또는 오른쪽 중 하나(둘 다는 아님)를 생략할 수 있으며, 이 경우 로컬 사용자 이름 및 " "가 암시됩니다.--user [email protected]@@.host

답변2

@Joseph Tingiris 게시물이 저에게 적합하지 않습니다. "원격으로 사용자 인스턴스에 액세스할 수 없습니다"라는 메시지가 계속 나타납니다.

해결책은 runuser루트 ID를 사용하는 것입니다.

runuser -l userNameHere -c 'systemctl --user stop user-service.service'

편집하다:말하는 것을 잊었습니다. 이는 다음에도 적용됩니다.

su - userNameHere -c 'systemctl --user stop user-service.service'

그러나 이 모든 것은 사용자가 실제로 로그인한 경우에만 작동합니다(직접 터미널, GUI 또는 SSH를 통해).

관련 정보