Systemd
如何將 –machine 參數轉換為 systemctl 到一個單元文件?
我有這個單位文件
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 --machine=drew@.host --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
成功執行。我需要參數--machine=drew@.host --user
,因為我pactl
在腳本中呼叫。udev 以 root 身份執行,因此作為使用者程序執行的 Pipewire/PulseAudio(如果我做對了)將拒絕連接並且腳本將失敗。但是,我想直接通過 udev 執行 systemd 單元,無需
/usr/local/bin/run_hdmi_sound_toggle
. 我將如何將其--machine=drew@.host --user
放入單元文件中,這樣才能正常工作?我嘗試查看文件,但無法弄清楚。
所以事實證明這是不可能的,因為它不受支持:https ://lists.freedesktop.org/archives/systemd-devel/2022-January/047336.html