我想通过 crontab 运行以下命令:
30 12 * * * natasha /usr/bin/canberra-gtk-play --file="/home/natasha/Audio/Dat_Jene_Tabletki.wav" --volume=15 --loop=3
但该命令没有执行。直接从命令行运行相应的命令即可。
线条
4 12 * * * natasha /usr/bin/cvlc /home/natasha/Audio/Dat_Jene_Tabletki.wav 55 16 * * * natasha /usr/local/bin/mpg123 -q /home/natasha/Downloads/file.mp3
使用 crontab 可以正确执行,但 canberra-gtk-play 不起作用。
有人可以帮我解决这个问题吗?
我的系统是 openSUSE 42.1。
先感谢您。
问候,娜塔莉亚
答案1
canberra-gtk-play 无法通过 cron 运行,因为正如其名称所示,它依赖于 GTK+ 图形工具包 - 这需要 Xorg 或另一个 X11 或 Wayland 服务器才能访问。
Cron 作业无法轻松访问 X11,因为服务器的地址并不总是相同 - 您可以尝试设置DISPLAY=":0"
,XAUTHORITY=…
但重新启动后它们可能会有所不同。
相比之下,PulseAudio 声音服务的地址始终位于固定位置,在不使用 PA 的系统上,只需直接访问 /dev 即可。
(如果你碰巧正在运行 Wayland,那么 canberra-gtk-play 应该能够连接到它,但是。)
我建议忘记,canberra-gtk-play
因为...如果你想要的只是播放声音,为什么您还会费心使用需要 X11 的工具吗?
更好的选择是paplay
或者mpv
甚至mplayer
。