我真的不明白如何创建一个简单的 cron 作业。这个想法是让 mplayer 在特定时间播放特定文件。
这是我的尝试:
MIN HOUR * * * /usr/bin/mplayer PATH_TO_THE_FILE > /dev/null 2>&1
它只会导致 X 服务器崩溃。我究竟做错了什么?
答案1
如果你只想要音频,一定要先转换为音频文件;这将为您省去处理 Pulseaudio 和 X 的麻烦。
选项:
将 cron-job 放入桌面用户表中并以该用户身份运行它,而不是以 root 身份运行。看
crontab -u
。您可能必须设置环境变量(我没有尝试)。当桌面用户未登录且 Pulseaudio 未启动时,此操作将会失败。了解如何允许其他用户使用 Pulseaudio,并根据其进行配置。当桌面用户未登录时,这也会失败。
运行脉冲音频全系统。
完全禁用 Pulseaudio,使用 ALSA 进行播放,并确保设备的权限
/dev/snd/*
与 cron 作业的用户/组兼容。
另外,考虑使用比它更简单的程序mplayer
(但要注意它可以播放什么格式)。例如mpg123
,或者非常简单paplay
(Pulseaudio,仅限 WAV)或aplay
(ALSA,仅限 WAV)。
答案2
从 cron 启动的作业没有控制 tty 或显示器。我假设你用实数代替MIN
和HOUR
?
也许尝试添加该-display
选项。
0 15 * * * /usr/bin/mplayer -display localhost.localdomain:0 PATH_TO_THE_FILE > /dev/null 2>&1
-display
您可能需要调整特定服务器的参数。
答案3
我建议您使用命令行程序来播放该文件。就像是sox
:
毫无疑问,它可以作为一个包提供。它包含一个别名play
,它将仅播放该文件。请注意,sox
仅播放音频文件,但您已表示这不是问题。