使用 cron 任务播放音频

使用 cron 任务播放音频

我正在尝试向我自己的 shell 添加一个新命令,例如:

alarm 7.15 music.wav

我想创建一个 cron 作业,以便它可以在每天的指定时间安排闹钟。因此,我为每次闹钟调用创建一个名为musicFile.txt

这是我要运行的 bash 文件:(musicFile.txt)

#!/bin/bash 
15 7 * * * XDG_RUNTIME_DIR=/run/user/$(id -u) play -q /home/harun/Desktop/music.wav > alarmFile 
crontab alarmFile 
rm -f alarmFile 
rm -f musicFile.txt 

然后我用 execvp 执行此注释:

bash musicFile.txt

但是什么都没发生。如何使用 crontab 设置闹钟?

答案1

就我而言,我使用当前用户会话运行 crontab:

$ crontab -e

* * * * * /usr/bin/play -q /home/user/test/bell.wav

这使得声音每分钟都在播放。

首先尝试使用更简单的命令。

如果要为不同用户配置警报,可以crontab -e从他们的终端会话中使用。要切换到其他用户终端会话,请使用su username命令。

但是,更好的方法是,不要在 crontab 中使用带参数的命令,而是使用脚本并在 crontab 中指定其路径。不要忘记chmod +x yourscriptpath,也不要忘记指定二进制文件的完整路径,并通过执行来检查脚本sh pathtoyour/script.sh

如果您可以在终端中运行以下命令:

XDG_RUNTIME_DIR=/run/user/$(id -u) play -q /home/harun/Desktop/music.wav > alarmFile 
crontab alarmFile 
rm -f alarmFile 
rm -f musicFile.txt 

crontab -e然后,您可以尝试通过命令执行和编辑将其添加到您的 crontab 文件中:

15 7 * * * XDG_RUNTIME_DIR=/run/user/$(id -u) play -q /home/harun/Desktop/music.wav > /home/harum/alarmFile && /bin/rm -f /home/harun/alarmFile && /bin/rm -f /home/harum/musicFile.txt 

要检查它现在是否有效,只需替换15 7* *

脚本创作:

vim.tiny /home/harum/alarm.sh

#!/bin/bash
XDG_RUNTIME_DIR=/run/user/$(id -u) play -q /home/harun/Desktop/music.wav > /home/harum/alarmFile && /bin/rm -f /home/harun/alarmFile && /bin/rm -f /home/harum/musicFile.txt

使脚本可执行:

chmod +x /home/harum/alarm.sh

将脚本添加到crontab:

crontab -e

15 7 * * * /home/harum/alarm.sh

最后,正如一位评论者所建议的那样,您可以XDG_RUNTIME_DIR在脚本中直接指定特定用户(如果您想以 root 身份运行脚本,但在脚本中使用其他用户 ID:

XDG_RUNTIME_DIR=/run/user/$(id yourSpecificUser | awk -F" " '{print $1}' | awk -F"(" '{print $1}' | awk -F"=" '{print $2}')

相关内容