允许用户配置cron

its*_*dok 3 python bash cron

我在服务器上有这个bash脚本,每小时运行一次,通过cron.我非常高兴,但现在用户希望能够通过Web界面配置频率.

我不习惯以编程方式操作cron配置,但我不确定其他选项是否更好.

我看到它的方式,我可以:

  • 安排一个脚本每分钟运行一次并检查它是否真的应该"现在"运行
  • 完全放弃cron并使用自己的调度程序deamon.这可能意味着在python中重写脚本
  • ...或者从网络界面中操作cron配置(用python BTW编写)

我该怎么办?

编辑:澄清一下,我担心操纵cron的主要原因是因为它基本上是文本操作而没有验证,如果我搞砸了,我的其他任何cron作业都不会运行.

这是我最终做的事情:

根据stefanw的建议,我在bash脚本的顶部添加了以下行:

if [ ! `cat /home/username/settings/run.freq` = $1 ]; then
    exit 0
fi
Run Code Online (Sandbox Code Playgroud)

我设置了以下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
Run Code Online (Sandbox Code Playgroud)

从Web界面,我让用户在这四个选项之间进行选择,并根据用户选择的内容,将字符串2_hours/1_hour/30_minutes/10_minutes写入文件中/home/username/settings/run.freq.

我不喜欢它,但它似乎是最好的选择.

ste*_*anw 10

为您的用户提供一些合理的选择,例如每分钟,每5分钟,每半小时......,并将这些值转换为cron作业字符串.这是用户友好的,并禁止用户直接篡改cron作业字符串.