允许用户配置cron
我在服务器上有一个每小时运行一次的bash脚本,是通过cron来定时的。我之前对此很满意,但现在用户希望能通过网页界面来设置运行频率。
我对通过程序来修改cron配置不太放心,但也不确定其他选项是否更好。
我觉得我可以选择:
- 安排一个脚本每分钟运行一次,检查一下是否真的该“现在”运行
- 完全放弃cron,使用一个自己的调度程序的守护进程。这可能意味着需要把脚本重写成python
- ...或者硬着头皮从网页界面修改cron配置(顺便说一下,网页是用python写的)
我该怎么办呢?
补充说明:我之所以对修改cron感到不安,主要是因为这基本上是文本操作,没有验证,如果我搞错了,其他的cron任务就都不能运行了。
最后我做了这个:
根据stefanw的建议,我在我的bash脚本顶部添加了以下一行:
if [ ! `cat /home/username/settings/run.freq` = $1 ]; then
exit 0
fi
我设置了以下cron任务:
0 */2 * * * /home/username/scripts/publish.sh 2_hours
@hourly /home/username/scripts/publish.sh 1_hour
*/30 * * * * /home/username/scripts/publish.sh 30_minutes
*/10 * * * * /home/username/scripts/publish.sh 10_minutes
在网页界面上,我让用户在这四个选项中选择,然后根据用户的选择,把字符串 2_hours/1_hour/30_minutes/10_minutes
写入到 /home/username/settings/run.freq
文件中。
我并不是特别喜欢这样,但看起来这是最好的选择。
5 个回答
0
那Webmin怎么样呢?我自己没用过,但看起来你可以设置一个叫做cron的模块,并且给想要配置任务的用户权限。
3
你可以使用一个Python的调度库,这些库已经帮你做了大部分工作:
10
给你的用户一些合理的选择,比如每分钟、每5分钟、每半小时等等,然后把这些选择转换成一个cron作业的字符串。这样做比较人性化,也能防止用户直接修改cron作业的字符串。