我正在尝试向我自己的 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 设置闹钟?
就我而言,我使用当前用户会话运行 crontab:
这使得声音每分钟播放一次。
首先尝试使用更简单的命令。
如果您想为不同的用户配置警报,您可以
crontab -e
从他们的终端会话中使用。要切换到其他用户终端会话,请使用su username
命令。但是,最好不要在 crontab 中使用带参数的命令,而是使用脚本并在 crontab 中指定其路径。不要忘记
chmod +x yourscriptpath
,也不要忘记指定二进制文件的完整路径并通过执行检查脚本sh pathtoyour/script.sh
如果您可以在终端中运行下一个:
然后您可以尝试通过
crontab -e
执行命令和编辑将其添加到您的 crontab 文件中:要检查它现在是否有效,只需替换
15 7
为* *
.脚本创建:
使脚本可执行:
将脚本添加到 crontab:
最后,正如其中一位评论员所建议的那样,您可以
XDG_RUNTIME_DIR
通过直接指定特定用户来在脚本中使用(如果您想以 root 身份运行脚本但在脚本中使用其他用户 ID: