定时任务

82 阅读2分钟

image.png minute  hour   day   month    dayofweek    command

 

    minute - 从0到59的整数 

    hour - 从0到23的整数 

    day - 从1到31的整数 (必须是指定月份的有效日期)

    month - 从1到12的整数 (或如Jan或Feb简写的月份)

    dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)

    command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令) 

之前我的crontab文件中并没有从# run-parts以下的四行定时任务命令,不知道你们的有没有,没有的话可以添加上,这四句命令分别是 

        第一行 每小时的01分用root用户执行一次etc/cron.hourly文件夹下的sh脚本,

        第二行  每天的四点01分用root用户执行一次etc/cron.daily文件夹下的sh脚本

        第三行  每星期日的四点22分用root用户执行一次etc/cron.weekly文件夹下的sh脚本

        第四行  每年的一月的四点42分用root用户执行一次etc/cron.monthly文件夹下的sh脚本

了解上面的命令之后,我们的目的是每周执行一次sh脚本,所以我们在cron.daily文件夹下面新建一个sh脚本,内容如下

###################################################################### # 日志定时运行时间为每天4点2分 # 删除5天之前的日志文件 # 日志文件时间是根据日志名称后面的日期来计算 # 运行脚本注意日志文件中是否有其他相同后缀的非日志文件和日志文件名称是否符合要求 ###################################################################### #日志文件所在目录 path=/home/dameng/software/tomcat-cangwu/logs #进入日志目录 cd path #catalina.out日志文件备份 #获取前一天的日期 bak_date=`date +%Y-%m-%d -d "1 days ago"` #备份catalina.out日志,后面添加日期 cp catalina.out catalina.out.bak_date.log #清空catalina.out日志文件 echo > catalina.out #5天之前的日志文件删除 #获取5天之前的日期 del_date=date +%Y-%m-%d -d "5 days ago" #获取文件名中的日期字符串,然后对比时间进行相应的操作,localhost_access_log的后 缀文件名一般是txt,这里包括txt文件 for n in ls *.log *.txt -1;do m=echo $n | awk -F. '{print $(NF-1)}' m=echo ${m:0-10} if [ ! m];thenecho"ISNULL"continuefiif[[m ]; then echo "IS NULL" continue fi if [[ m < deldatedel_date || m = deldate]];thenechofiledel_date ]];then echo file n will be deleted. rm -rf $n fi done