pacat -p 备份脚本中的某些文件需要 $DISPLAY 用于 X11,为什么?

pacat -p 备份脚本中的某些文件需要 $DISPLAY 用于 X11,为什么?

我编写了一个 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)更重要......

相关内容