Systemd

如何將 –machine 參數轉換為 systemctl 到一個單元文件?

  • January 31, 2022

我有這個單位文件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

引用自:https://unix.stackexchange.com/questions/685689