通过Bash / Shell在Crontab中启用/禁用任务

时间:2012-12-23 12:47:25

标签: linux bash shell crontab

有没有办法使用Bash / Shell启用和禁用Crontab任务?

因此,当用户启动Server 1时,它将启用Server 1 Crontab行,依此类推。 当用户停止服务器1时,服务器1 Crontab行被禁用(#)。 这可能吗?如何?

提前致谢

*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check

4 个答案:

答案 0 :(得分:14)

SERVERNUM=$1

启用:

crontab -l | sed "/^#.*Server $SERVERNUM check/s/^#//" | crontab -

要禁用:

crontab -l | sed "/^[^#].*Server $SERVERNUM check/s/^/#/" | crontab -

文稿:

barmar@dev$ crontab -l
*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check
barmar@dev$ crontab -l | sed '/^[^#].*Server 1 check/s/^/#/' | crontab -
barmar@dev$ crontab -l
#*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check
barmar@dev$ crontab -l | sed '/^#.*Server 1 check/s/^#//' | crontab -
barmar@dev$ crontab -l
*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check

答案 1 :(得分:2)

我建议你为每个服务器一个脚本添加你的cron作业到/etc/cron.d。然后让cron脚本扫描一些标记文件,如果应该执行cron作业。

答案 2 :(得分:0)

这是一个变种,我使用cronjob每晚加载它自己。我只是编辑一个文件,它会在每晚10点重新加载。您可以更频繁地重新加载。我为每个节点保留了一个文件目录。诀窍是确保没有人注释重装线。

0 22 * * * crontab /home/ME/cron_files/NODE

答案 3 :(得分:0)

作为快速而又脏的修复,您可以启用或禁用相应cron脚本的执行权限。

E.g。如果你想阻止定位自动更新其数据库(可能是I / O消耗):

cd /etc/cron.daily

sudo chmod a-x locate

这可能是针对cron框架的,但它很快就会被应用,并且可以在需要时立即使用。