Linux中利用Crontab做定时任务详解 关于crontab的安装请参考: (1) cron(crond)介绍: crond是linux下用来周期性执行某种任务或等待处理某些事件的一个守护进程,crond进程启动后,会每分钟定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 我们经常使用的是crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。 补充: Linux下的任务调度分为两类,系统任务调度和用户任务调度。 (2) 配置文件: /etc/cron.deny: 该文件中所列用户不允许使用crontab命令。 /etc/cron.allow 该文件中所列用户允许使用crontab命令。 /etc/cron.d/: 这个目录用来存放任何要执行的crontab文件或脚本。 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。 /etc/crontab文件就是系统任务调度的配置文件。 /etc/crontab: 这个文件负责调度各种管理和维护任务。 用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。 所有用户定义的crontab 文件都被保存在/var/spool/cron目录中。 其文件名与用户名一致。 /var/spool/cron/: 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名。 补充: 还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期/月执行一次。 (3)crontab文件的含义: 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段。 格式如下: minute hour day month week command 其中: minute:表示分钟,可以是从0到59之间的任何整数。 hour:表示小时,可以是从0到23之间的任何整数。 day:表示日期,可以是从1到31之间的任何整数。 month:表示月份,可以是从1到12之间的任何整数。 week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 command:要执行的命令,可以是系统命令/自己编写的脚本文件。 在以上各个字段中,还可以使用以下特殊字符: *:代表所有可能的值。 例如:month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 ,:可以用逗号隔开的值指定一个列表范围。 例如:'1,2,5,7,8,9' -:可以用整数之间的中杠表示一个整数范围。 例如:'2-6'表示'2,3,4,5,6' /:可以用正斜线指定时间的间隔频率。 例如:'0-23/2'表示每两小时执行一次。 (3) crontab命令详解 格式: crontab [-u username] 参数: -e:编辑工作表 -l:列出工作表里的命令 -r:删除工作 补充: 省略用户表表示操作当前用户的crontab。 功能: 在固定的间隔时间执行指定的系统指令/脚本。 常用周期性的日志分析或数据备份等工作。 (4)操作crontab文件 crontab -e进入当前用户的工作表编辑,是常见的vim界面。 1、新建crontab 每天的早9点到晚5点打印date到控制台 #echo the date to the console every 30minute between 9pm and 5am 0,30 09-17 * * * /bin/echo `date` > /dev/console 2、列出crontab文件 crontab -l 3、 备份 crontab -l > ~/mycron 4、 删除 5、 恢复 crontab ~/mycron 补充: 恢复的两种方式 刚刚我们备份到家目录下一个mycron文件 方式1: 将其mycron拷贝到/var/spool/cron/<username>,其中<username>是用户名。 方式2: 如果由于权限问题无法完成拷贝,可以用crontab <filename> (4)、补充一些实用的实例 以下的youCommand代表的是你自己定义的命令。 案例1: 每1分钟执行一次 * * * * * youCommand 案例2: 每小时的第3和第15分钟执行 3,1 Linux中Crontab定时任务简单讲解 关于crontab的安装请参考: Linux中Crontab(定时任务)安装及配置详解。 (1) cron(crond)介绍: crond是linux下用来周期性执行某种任务或等待处理某些事件的一个守护进程,crond进程启动后,会每分钟定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 我们经常使用的是crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。 补充: Linux下的任务调度分为两类,系统任务调度和用户任务调度。 (2) 配置文件: /etc/cron.deny: 该文件中所列用户不允许使用crontab命令。 /etc/cron.allow 该文件中所列用户允许使用crontab命令。 /etc/cron.d/: 这个目录用来存放任何要执行的crontab文件或脚本。 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。 /etc/crontab文件就是系统任务调度的配置文件。 /etc/crontab: 这个文件负责调度各种管理和维护任务。 用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。 所有用户定义的crontab 文件都被保存在/var/spool/cron目录中。 其文件名与用户名一致。 /var/spool/cron/: 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名。 补充: 还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期/月执行一次。 (3)crontab文件的含义: 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段。 格式如下: minute hour day month week command 其中: minute:表示分钟,可以是从0到59之间的任何整数。 hour:表示小时,可以是从0到23之间的任何整数。 day:表示日期,可以是从1到31之间的任何整数。 month:表示月份,可以是从1到12之间的任何整数。 week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 command:要执行的命令,可以是系统命令/自己编写的脚本文件。 在以上各个字段中,还可以使用以下特殊字符: *:代表所有可能的值。 例如:month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 ,:可以用逗号隔开的值指定一个列表范围。 例如:'1,2,5,7,8,9' -:可以用整数之间的中杠表示一个整数范围。 例如:'2-6'表示'2,3,4,5,6' /:可以用正斜线指定时间的间隔频率。 例如:'0-23/2'表示每两小时执行一次。 (3) crontab命令详解 格式: crontab [-u username] 参数: -e:编辑工作表 -l:列出工作表里的命令 -r:删除工作 补充: 省略用户表表示操作当前用户的crontab。 功能: 在固定的间隔时间执行指定的系统指令/脚本。 常用周期性的日志分析或数据备份等工作。 (4)操作crontab文件 crontab -e进入当前用户的工作表编辑,是常见的vim界面。 1、新建crontab 每天的早9点到晚5点打印date到控制台 #echo the date to the console every 30minute between 9pm and 5am 0,30 09-17 * * * /bin/echo `date` > /dev/console 2、列出crontab文件 crontab -l 3、 备份 crontab -l > ~/mycron 4、 删除 5、 恢复 crontab ~/mycron 补充: 恢复的两种方式 刚刚我们备份到家目录下一个mycron文件 方式1: 将其mycron拷贝到/var/spool/cron/<username>,其中<username>是用户名。 方式2: 如果由于权限问题无法完成拷贝,可以用crontab <filename> (4)、补充一些实用的实例 以下的youCommand代表的是你自己定义的命令。 案例1: 每1分钟执行一次 * * * * * youCommand 案例2: 每小时的第3和第15分钟执行 3,15 * * * * youCommand 案例3: 在上午8点到11点的第3和第15分钟执行 3,15 8-11 * * * youCommand 案例4: 每隔两天的上午8点到11点的第3和第15分钟执行 3,15 8-11 */2 * * youCommand 案例5: 每周一上午8点到11点的第3和第15分钟执行 3,15 8-11 * * 1 youCommand 案例6: 每晚的21:30重启smb 30 21 * * * /etc/init.d/smb restart 案例7: 每月1、10、22日的4 : 45重启smb 45 4 1,10,22 * * /etc/init.d/smb restart 案例8: 每周六、周日的1 : 10重启smb 10 1 * * 6,0 /etc/init.d/smb restart 案例9: 每天18 : 00至23 : 00之间每隔30分钟重启smb 0,30 18-23 * * * /etc/init.d/smb restart 案例10: 每星期六的晚上11 : 00 pm重启smb 0 23 * * 6 /etc/init.d/smb restart 案例11: 每一小时重启smb * */1 * * * /etc/init.d/smb restart 案例12: 晚上11点到早上7点之间,每隔一小时重启smb * 23-7/1 * * * /etc/init.d/smb restart 欢迎大家给予宝贵的意见或者建议。 欢迎大家补充或者共享一些其他的方法。 感谢支持。 5 * * * * youCommand 案例3: 在上午8点到11点的第3和第15分钟执行 3,15 8-11 * * * youCommand 案例4: 每隔两天的上午8点到11点的第3和第15分钟执行 3,15 8-11 */2 * * youCommand 案例5: 每周一上午8点到11点的第3和第15分钟执行 3,15 8-11 * * 1 youCommand 案例6: 每晚的21:30重启smb 30 21 * * * /etc/init.d/smb restart 案例7: 每月1、10、22日的4 : 45重启smb 45 4 1,10,22 * * /etc/init.d/smb restart 案例8: 每周六、周日的1 : 10重启smb 10 1 * * 6,0 /etc/init.d/smb restart 案例9: 每天18 : 00至23 : 00之间每隔30分钟重启smb 0,30 18-23 * * * /etc/init.d/smb restart 案例10: 每星期六的晚上11 : 00 pm重启smb 0 23 * * 6 /etc/init.d/smb restart 案例11: 每一小时重启smb * */1 * * * /etc/init.d/smb restart 案例12: 晚上11点到早上7点之间,每隔一小时重启smb * 23-7/1 * * * /etc/init.d/smb restart 欢迎大家给予宝贵的意见或者建议。 欢迎大家补充或者共享一些其他的方法。 感谢支持。 |
|