我编写了一个 udev 规则和一个 systemd 单元,因此如果我插入一个特定的硬盘,rsync 会在后台备份我的 /home,并在准备好时播放音频文件。
在我第一次尝试时出现以下错误pulseaudio[8802]: [pulseaudio] main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
注意,我已经修复了这个问题。脚本准备好后,我的声音就恢复了。
但我不明白为什么 pacat 甚至 aplay 需要这个变量来播放音频。我正在使用 xfce4-session 运行 ubuntu bionic。
答案1
和aplay
都是pacat
用户空间程序,所以最简单的方法对于程序员来说要发出声音,就必须使用图书馆,dbus
因为没有一个头脑正常的人会使用这些图书馆cron
,或者在udev
规则中,或者天堂禁止在systemd
吧??? :-)
好吧,他们是对的,直到你出现,你确实采取了正确的解决方案来解决这个问题。
如果您希望在 X 完全不运行的情况下发出声音(例如无头服务器),您可以将ASCII
BEL
¹ 字符回显到tty
。
注1: 007:真复古:哔声比换行(10)、换页(12)或回车(13)更重要......