限制cron的使用

我有一个托pipehostgator,我刚刚发现,他们不允许* * * * cron作业。 如果我有一个运行less于每15分钟,他们改变为* / 17或类似的东西。 我search,但我无法find一种方法来做我自己的cPanel安装这个。 任何提示如何复制这个。

注意:我不是在寻找绕过这个限制的答案。 我试图找出如何在我自己的部署上实现它。

谢谢。

我不知道实现此function的标准包。

当然,您可以创build一个root cron作业来检查和“修复”用户cronjob。 以下面的脚本为例,它大部分都是未经testing的,但是它与我向它扔过的几个例子一起工作。

#!/bin/bash min=16 # the minimum allowed interval between runs for crontab in /var/spool/cron/crontabs/* do cp $crontab $crontab.bak # replace the * * * * * jobs with */16 * * * * jobs. sed -i "s/\* \* \* \* \*/\*\/16 * * * */" $crontab for i in `seq 1 $min` do # replace */N * * * * for every N <= min sed -i "s/\*\/$i \* \* \* \*/*\/16 * * * */" $crontab done done 

这假设crontab字段被空格分隔,这可能不是真的 – 我用这个假设来保持正则expression式(希望)是可以理解的。 为了使它更强大,用左边的正则expression式replace所有的空格,如果你的sed支持的话,或者[ \t]+ (我认为)如果没有的话。

请注意,该示例对每个crontab应用17个不同的search和replace,当crontabs数量增加时,这当然可能是不可接受的。 为了缓解这个问题,你可以使用一个正则expression式来匹配所有可能的侵权cronjobs。 例如(未经testing的): \*(/[0-9][0-5])* \* \* \* \*或者使用seq -s '|' 0 $min seq -s '|' 0 $min 。 让我知道你是否需要帮助。