시스템 스크립트가 시스템 사용자 서비스를 제어할 수 있습니까?

시스템 스크립트가 시스템 사용자 서비스를 제어할 수 있습니까?

systemd-suspend.service일시 중단하기 전에(커널 일시 중단을 방지하기 때문에) 사용자 서비스를 종료하고 시스템이 재개된 후에 다시 시작하는 "시스템 절전" 스크립트를 작성하려고 합니다 .

문제는 시스템 절전 스크립트가 시스템 권한으로 실행되고 사용자 서비스에 대해 이를 수정하는 방법을 잘 모르겠다는 것입니다. systemctl --user분명히 작동하지 않습니다.

실행을 시도했지만 다음 오류가 발생합니다 su -c "systemctl --user stop <service>" <user>.USER=<user> systemctl --user stop <service>

Failed to connect to bus: No such file or directory

매뉴얼 페이지는 systemctl이 문제에 대한 많은 지침을 제공하지 않습니다.

답변1

약간의 고민 끝에 다음 사용 방법을 알아냈습니다 sudo(또는 숫자 UID를 사용할 수 있어 사용자 이름을 구문 분석하는 수고를 덜어주기 때문에 su이것을 사용하고 있습니다 ).sudo

XDG_RUNTIME_DIR=/run/user/<uid> sudo -E -u '#<uid>` systemctl --user status <service>.service

UID가 알려져 있거나 systemctl status user.slice.

관련 정보