Linux系统计划任务之二:cron任务调度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统计划任务之二:cron任务调度相关的知识,希望对你有一定的参考价值。
接上一内容Linux系统计划任务之一:at指令
系统在日常的运行当中,经常需要作一些周期的备份或检查工作。这种有规律的循环执行的工作任务,在Linux系统中是用crond系统服务来实现的。crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,它在CentOS系统上默认是打开的。
[[email protected] ~]# chkconfig --list crond crond 0:off1:off2:on3:on4:on5:on6:off
linux下的任务调度分为两类,分别为系统级任务调度和用户级任务高度。下面分别介绍。
1.系统级任务调度
Linux系统周期性执行的任务,比如说自动的进行在线更新 (on-line update)、自动的进行 updatedb更新文件名数据库等。这种工作调度可通过编辑全局配置文件/etc/crontab(这是一个纯文本文件,不要跟/usr/bin/crontab可执行文件混淆)来进行。该文件的内容如下:
[[email protected] ~]# vim /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
该文件前四行是配置cron任务运行的环境变量信息。如下表:
文件中以#开头的内容是对任务的配置格式的具体说明。
任务的配置格式为:分 时 日 月 周 执行用户 执行指令内容 ,共7小节。
参数所代表的含义如下表所示:
第5列周几的数据0和7表示星期天。
前五列的值还可以含有一些辅助字符,如下表:
第6列为执行用户。如这一列内容为空的话,将导致所配置的例行程序无法运行。
第7列为所要执行的指令。这有两种方法,一种是直接以指令形式下达,一种是linux系统中常用的指定某个存放某类脚本文件的目录的方式。
A.指令形式
如系统每5分钟记录一次内存余量情况,并写在文件中。
*/5 * * * * root grep "^MemFree" /proc/meminfo >> /tmp/memory.log
B.指定目录方式
首写编写要执行的脚本并保存到某特定的目录中。如下,编辑文件
[[email protected] ~]# vim /tmp/cron/backupEtc.sh #!/bin/bash tar -Jcf /backup/etc_`date ‘+%F_%T‘`.tar.xz /etc/*
#保存后修改文件模式。注意,目录中的脚本文件必须具体可执行权限。否则,无法运行。
[[email protected] ~]# chmod a+x /tmp/cron/backupEtc
编辑/etc/crontab文件,添加如下内容
0 4 * * * root run-par ts /tmp/cron/
该行内容设定系统每天4点钟自动执行目录/tmp/cron下的所有脚本文件,包括上面自定义的自动备份/etc目录下文件的脚本。
在/etc目录下,系统已设置了cron.daily、cron.hourly、cron.monthly、cron.weekly目录信息。为管理的规范,也可将执行任务的脚本放在前4个相应的目录中。
2.用户级任务调度
用户如有周期性要执行的工作,比如给用户数据备份或维护人员定期检查服务器状态并邮件提醒等。用户可以使用crontab命令来定制自己的任务调度。
如用户zeng登录后,使用crontab –e指令编辑任务内容。
[[email protected] ~]$ crontab –e
用户任务调度的配置格式同系统级任务调度全局性文件/etc/crontab的格式相同,只是无需指定第6列执行用户,具体说明见上一小节。输入如下内容并保存退出。
#该例子只用开测试
*/5 * * * * echo "now is:`date `" >> /tmp/userCron.log
每一个任务一行,可输入多个任务。该命令中所输入的内容会自动的保存到/var/spool/cron/zeng文件中。
[[email protected] ~]# cat /var/spool/cron/zeng
*/5 * * * * echo "now is:`date `" >> /tmp/userCron.log
用户级任务调度的编写内容与系统级调度内容相比较,只是少写了执行用户而以,其它相同。
Crontab的其它参数说明
-u:只有root能下达的参数,可指定所建立、查询或删除crontab信息的用户
-l:查看用户crontab的内容,默认是当前登录用户
-e:编辑crontab文件的内容
-r:删除crontab文件的内容
如查询用户的任务调度作业
[[email protected] ~]#crontab -u zeng -l #显示内容 */2 * * * * echo"now is:`date ‘+\%F \%T‘ `" >> /tmp/userCron.log
以上是关于Linux系统计划任务之二:cron任务调度的主要内容,如果未能解决你的问题,请参考以下文章