我有一个 cron 作业,它在我的一台运行 Void Linux 的家庭服务器上播放音频文件mpv
。我听不到任何声音,直到我 ssh 进入服务器并手动启动 pipewire,之后它才适用于所有未来的 cron 作业运行。
/usr/bin/pipewire &
/usr/bin/sleep 1
/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ 100%
/usr/bin/mpv <path-to-the-audio-file>
我对所有内容都使用了完整路径,因为我了解到 cron 是在极简环境中运行的,其中并非所有内容都包含在内$PATH
。这sleep
是为了确保 pipewire 已准备就绪,因为我在启动 pipewire 后立即设置接收器音量时遇到了问题。它似乎在其他地方对我有用,所以我也在这里使用了它。
TL;DR:我需要 ssh 进入服务器并启动 pipewire 至少一次才能播放音频。
有没有办法让 pipewire 在重启后也能启动?
设置
XDG_RUNTIME_DIR
我的用户目录似乎可以解决问题。因此 cron 脚本现在变成: