linux(centos)中的cron计划任务配置方法
- 网站建设
- 2013-02-21
- 16868热度
- 1评论
这里志文工作室要为您介绍的cron来源于希腊单词chronos(意为“时间”),指linux系统下一个自动执行指定任务的程序(计划任务)。
1 crontab 命令及选项
[code lang=bash]
crontab -u [-l, -r, -e]
[/code]
-u指定一个用户-l列出某个用户的任务计划-r删除某个用户的任务-e编辑某个用户的任务
2 crontab 文件语法与写法
可用 crontab -e 命令来编辑,编辑的是 /var/spool/cron 目录下对应用户的 cron 文件,也可以直接修改 /etc/crontab 文件。具体格式如下:
Minute Hour Day Month Week command 分钟 小时 天 月 星期 命令 0-59 0-23 1-31 1-12 0-6 command
每个字段代表的含义如下:
Minute每个小时的第几分钟执行该任务Hour每天的第几个小时执行该任务Day每月的第几天执行该任务Month每年的第几个月执行该任务DayOfWeek每周的第几天执行该任务,0表示周日Command指定要执行的程序 、脚本或命令
几个特殊符号及含义:
*代表取值范围内的数字/代表”每”-代表从某个数字到某个数字,分开几个离散的数字
定时任务参数示例及说明:
# .---------------- 分钟,取值范围为 0-59 # | .------------- 小时,取值范围为 0-23 # | | .---------- 日,取值范围为 1-31 # | | | .------- 月,取值范围为 1-12 # | | | | .---- 星期,取值范围为 0-7,0 和 7 都表示星期日 # | | | | | .-- 要执行的命令 # | | | | | | 0 1 * * * root /root/test-hello.sh
3 关于 crontab 的配置文件
crontab 的主配置文件是 /etc/crontab,它包括下面几行:
[code lang=bash]
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
[/code]
前四行是用来配置 crontab 任务运行环境的变量:
SHELL变量的值指定shell 环境(此处默认为 bash shell)PATH变量定义用来执行命令的程序路径MAILTOcron 任务的输出被邮寄给 MAILTO 变量定义的用户名,如果 MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出HOME变量可以用来设置在执行命令或脚本时使用的主目录。
run-parts 与 /etc/cron.<hourly|daily|weekly|monthly> 目录:
如在 /etc/crontab 文件中 run-parts 部分所示,它使用 run-parts 脚本来执行存在于 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目录中的脚本,这些脚本被相应地按照预设时间在每小时、每日、每周、或每月执行。这些目录中的文件应该是 shell 脚本,并且具有可执行权限(chmod u+x filename)。
/etc/cron.d 目录:
如果某 cron 任务需要根据调度来执行,而不是每小时、每日、每周、或每月地执行,它可以被添加到 /etc/cron.d 目录中。该目录中的所有文件使用和 /etc/crontab 中一样的语法。
cron 配置实例参考
5 * * * * ls指定每小时的第5分钟执行一次ls命令30 5 * * * ls指定每天的 5:30 执行ls命令30 7 8 * * ls指定每月8号的7:30分执行ls命令30 5 8 6 * ls指定每年的6月8日5:30执行ls命令30 6 * * 0 ls指定每星期日的6:30执行ls命令 [注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等]30 3 10,20 * * ls每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]25 8-11 * * * ls每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]*/15 * * * * ls每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]30 6 */10 * * ls每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令 ]50 7 * * * root run-parts /etc/cron.daily每天7:50以 root 身份执行/etc/cron.daily目录中的所有可执行文件。(注:run-parts参数表示,执行后面目录中的所有可执行文件)10,20,30 * * * * echo "第10、20、30分钟输出一次" >> /tmp/cron1.txt第10、20、30分钟输出到/tmp/cron1.txt0 */2 * * * lzw.me /usr/bin/somecommand >> /dev/null 2>&1以用户lzwme的身份每两小时就运行某个程序
4 CentOS 中使用 crontab 命令及管理概览
[code lang=bash]
# 检测是否已安装
rpm -qa | grep crontab
# 使用 yum 安装 crontab
yum install -y crontabs
# 查看状态
systemctl status crond
# 设置 crontab 开机自启
systemctl enable crond
# 手动启动 crontab
systemctl start crond
# 编辑当前用户的定时任务
crontab -e
#查看 crontab 已保存的定时任务
crontab -l
[/code]
示例:创建一个每日 5 点执行的定时任务
新建文件 /root/test-hello.sh,内容示例:
[code lang=bash]
#! /bin/bash
t=$(date +%Y%m%d%H%M%S)
echo $t > /var/log/test-hello.log
[/code]
执行 crontab -e,新增一行:
[code lang=bash]
0 5 * * * root /root/test-hello.sh
[/code]
[…] http://lzw.me/a/linux-centos-cron.html […]