systemctl의 --machine 매개변수를 단위 파일로 변환하는 방법은 무엇입니까?

systemctl의 --machine 매개변수를 단위 파일로 변환하는 방법은 무엇입니까?

나는이 단위 파일을 가지고 있습니다 hdmi_sound_toggle.service:

[Unit]
Description=Runs /usr/local/bin/hdmi_sound_toggle.py to switch to the correct sound output
  
[Service]
Type=oneshot
ExecStart=/usr/local/bin/hdmi_sound_toggle.py

그런 다음 다음과 같은 udev 규칙이 있습니다.

SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/run_hdmi_sound_toggle"

가지다 /usr/local/bin/run_hdmi_sound_toggle:

#!/bin/bash
systemctl [email protected] --user --now start hdmi_sound_toggle.service

내가 달리기를 마친 후에

sudo systemctl daemon-reload
sudo udevadm control --reload-rules
sudo udevadm trigger --verbose --action=change --subsystem-match=drm

파일이 /usr/local/bin/hdmi_sound_toggle.py성공적으로 실행됩니다. 스크립트를 호출 [email protected] --user하므로 매개변수가 필요합니다 . pactludev는 루트로 실행되므로 사용자 프로세스로 실행되는 Pipewire/PulseAudio(제가 올바르게 수행한 경우)는 연결을 거부하고 스크립트가 실패합니다.

그러나 udev를 통해 직접 systemd 유닛을 실행하고 싶습니다 /usr/local/bin/run_hdmi_sound_toggle. 이것이 작동하도록 하려면 어떻게 해야 할까요 [email protected] --user? 문서를 보려고 노력했지만 알 수 없습니다.

답변1

따라서 이는 지원되지 않기 때문에 불가능하다는 것이 밝혀졌습니다.https://lists.freedesktop.org/archives/systemd-devel/2022-January/047336.html

관련 정보