免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 653 | 回复: 1
打印 上一主题 下一主题

小技巧,用perl来生成一个一段时间内随机执行的crontab [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-22 11:06 |只看该作者 |倒序浏览
有时,我们在做系统crontab时,会发现有的命令需要在一个时间段中随机的一个时间被执行一次。crond服务并没有给我们提供这个功能,但我们可以用perl来生成随机时间。crontab依然是定时完成工作,但它执行命令的时间却是随机的。

解决问题的思路:
写一个会生成随机时间的crontab文件的perl脚本,在每天0点执行这个生成新crontab的perl脚本。

脚本如下:
root># cat rand_cron.pl

#!/bin/perl
#Author: Larry wu
#Usage: This script use to create a crontab randam  execute dbbackup.sh at 3:00 ~ 5:00 clock

open (CRONFILE,">/tmp/rand_cron.cron");
$time=`date`;

###create random time of minute and hour to execute dbbackup.sh
$rand_minute=int(rand 60);
$rand_hour=int(rand 6);
$rand_hour=3 if ($rand_hour < 3);

### create crontab and print it
print CRONFILE "###create a crontab randam  execute dbbackup.sh at 3:00 ~ 5:00 clock \n";
print CRONFILE "1 0 * * * perl /var/dbbackup/rand_cron.pl \n";
print CRONFILE "###clean db binlog last 3 days ago at 3:00 every day \n";
print CRONFILE "0 3 * * * find /var/lib/mysql/ -type f -mtime +3 -name '*bin*' | grep -v index | xargs rm -f \n";
print CRONFILE "###backup db binlog to /var/db_logbackup/  \n";
print CRONFILE "1 17 * * * bash  /var/db_logbackup/db_logbackup.sh >>/var/db_logbackup/db_logbackup.txt 2>>/var/db_logbackup/db_logbackup.txt \n";
print CRONFILE "###backup db use mysqlhotcopy to /var/dbbackup/ \n";
print CRONFILE "$rand_minute  $rand_hour * * * bash /var/dbbackup/dbbackup.sh hotcopy >> /var/dbbackup/dbbackup.txt 2>> /var/dbbackup/dbbackup.txt \n";

### load crontab and print log
$exec=`crontab /tmp/rand_cron.cron`;
if ($exec) {
  `echo "load crontab error at $time" >> /var/dbbackup/dbbackup.err`;
}else{
  `echo "load crontab success at $time" >> /var/dbbackup/dbbackup.txt`;
}

论坛徽章:
0
2 [报告]
发表于 2005-12-22 13:17 |只看该作者
有意思,不过crontab一般都是指定时间执行才放在那里的,如果随机执行可能就失去了他的意义.
不过对某些人来说还是比较重要的,帮忙顶一下.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP