[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를 통해).