Linux之循环执行任务

简介

在Linux下,crond服务是实现周期性计划任务的工具之一,crond服务能在规定的时间去执行设置的命令、脚本,功能类似windows下的“计划任务”。对一个多用户多任务的linux系统中,每个用户都可以设置自己的crontab,并且在/var/spool/cron/这个目录下会创建一个与创建计划任务用户同名的档案,档案的内容就是此用户使用“crontab -e”命令制作的计划任务。而每一次计划任务的执行,crond都会把执行的日志记录到/var/log/cron这个日志档案中,通过这个档案就会知道在某个时间,crond程序执行了哪个指令。作为系统管理员可以限定crontab的使用者,,/etc/cron.allow与/etc/cron.deny这两个档案就是来做权限的设定的,一般只保留一个档案即可,假如只保留/etc/cron.deny这个档案,档案中的内容是一行一个用户的用户名,表示在这个档案的用户不能使用计划任务的功能,而没有在这个档案内的其他用户则可以使用计划任务的功能。

命令格式

在制定计划任务时,我们使用crontab这个工具来设定,crontab的常用选项是“-e”与“-l”。 -e:edit,表示编辑计划任务列表 -l:list,表示列出计划任务列表[root@zhaochj ~]# crontab -e

计划任务的设置会涉及到两个要素:一是时间;二是指令。也就是在什么时间会执行什么样的指令。cron的语法格式:五个时间字段,一个指令字段 分 时 日 月 周 指令

时间的取值范围:

field allowed values —– ————– minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names)在这五个时间字段时可以使用一些特殊的符号:* :表示任何时刻,:表示时间分割,比如在“分”这个字段里的值为“1,15”表示第一分,第15分两个时刻- :表示一个时间段,如在“时”这个字段里的值为“2-5”表示零晨2点到零晨5点这个时间范围内/n:n表示一个整数,如在“日”这个字段里的值为“*/1”表示每隔一天执行一次命令时间段的一些示例

43 21 * * * 21:43 执行

15 05 * * * 05:15 执行

0 17 * * * 17:00 执行

0 17 * * 1 每周一的 17:00 执行

0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 执行

0-10 17 1 * * 毎月1日从 17:00到17:10 毎隔1分钟 执行

0 0 1,15 * 1 毎月1日和 15日和周一的 0:00 执行

42 4 1 * *     毎月1日的 4:42分 执行

0 21 * * 1-6   周一到周六 21:00 执行

0,10,20,30,40,50 * * * * 每隔10分 执行

*/10 * * * *        每隔10分 执行

* 1 * * *         从1:0到1:59 每隔1分钟 执行

0 1 * * * 零晨1:00 执行

0 */1 * * *        毎时0分 每隔1小时 执行

0 * * * *         毎时0分 每隔1小时 执行

2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02 执行

30 5 1,15 * * 每月1日 和 15日的 5:30 执行

一个备份脚本与cron结合达到自动备份的实例

备份脚本如下:[root@zhaochj ~]# vim autoback.sh #!/bin/sh # #author: Jack.zhao #Date: 2013-11-29 #Email: 419775240@qq.com #Description: This script backup file DATE=$(/bin/date +%Y%m%d) BASENAME=$(basename $1) [ -d /backup ] || /bin/mkdir /backup/bin/tar -czf /backup/$BASENAME.$DATE.tar.gz $1 1> /dev/null 2>> /backup/$BASENAME.error.log if [ $? -eq 0 ] then echo “$1 $DATE backup successfully” >> /backup/$BASENAME.success.log else echo “ERROR:failure $1 $DATE backup!” >> /backup/$BASENAME.error.log fi

[root@zhaochj ~]# chmod +x /root/autoback.sh

此脚本的使用方法:[root@zhaochj ~]# ./autoback.sh /etc/fstabefsg

脚本准备好了,那来设置计划任务,如果我们想对/home目录做一个自动备份工作,要求是每个月的1号、15号的零晨3点15分做备份工作:[root@zhaochj ~]# crontab -e 15 3 1,15 * * /root/autoback.sh /home

勤勉是通往胜利的必经之路。要是由于胆怯艰难而去另觅佳径,

Linux之循环执行任务

相关文章:

你感兴趣的文章:

标签云: