crontab命令:
- 使用crontab命令来配置:
- 语法:
crontab [-u user] [-l|-e|-r]
- 说明:
- 语法:
-u user 配置用户的cron(只有root能用)
-l 列出crontab的内容
-e 编辑crontab的内容(打开vi编辑器)
-r 删除crontab的内容
- 举例:每隔两分钟把当前日期写到指定文件
crontab -e ,加入*/2 * * * * echo `date`>/tmp/date.tmp
查看目录:ls -al /var/spool/cron
查看配置: crontab -l
删除:crontab -r
cron的权限控制:
默认情况下,所有用户都能使用cron
利用/etc/cron.allow和/etc/cron.deny可以控制那些用户可以使用cron
如果存在allow文件,那么它将包含可以提交cronttab的所有用户名单,每行一个用户,任何没有列出的用户都不能使用crontab命令。如果不存在allow文件,那么将检查deny文件,以确定哪些人不能使用crontab。如果两个文件都不存在,那么只有root可以使用。
Cron介绍:
/etc/crontab文件和/etc/cron.d目录
管理员的系统维护计划通常都保存在/etc/crontab文件和/etc/cron.d目录下面的其他文件中
这些文件允许以任何身份来执行命令
cron以一样的方式来解析/etc/crontab文件和/etc/cron.d目录下面的其他文件
系统关机或者系统时间发生变化而遗漏的命令,cron不会补充执行
anacron可以用于满足时间精度要求高的任务
RedHat CentOS上cron改名为crond
crontab的文件格式:
- 配置文件支持#开始的注释行
- 非注释行包括6~7个字段:
minute hour day month weekday [username] cmd
相互之间以空格隔开,cmd中的空格按照原意对待,不用加引号,run-parts部分代表运行目录下面的所有可执行文件
username字段只出现在/etc/crontab文件和/etc/cron.d目录下的文件中,用于指定运行该命令时使用的用户
范围:minute(0~59) hour(0~23) day(1~31) month(1~12) weekday(0~6)
MAILTO=root指定发生错误时信息发送目标
与时间相关的字段可以包含:
星号,表示匹配任意字符
整数,表示必须精确匹配
用短划线隔开的两个整数,表示范围
一些列用逗号隔开的整数和范围,表示匹配任何列出的值
例如:
// 从周一到周五的上午十点半
30 10 * * 1-5
时间相关字段的注意事项:
不要把星号放在第一个字段中,除非需要每分钟执行一次命令
某些crontab版本支持step。如1,3,5,7可以简写为1-7/2
weekday字段与day字段有潜在二义性,最终结果是或运算,而不是与运算,例如:
// 星期五每半个小时或者每月13号每半个小时执行一次”,
// 而不是“每月13号且是星期五的那天每半个小时执行一次
0,30 * 13 * 5
命令字段的注意事项:
命令可以是任何有效的shell命令
最后一个字段一直到行尾都是命令的内容
不要加引号
需要换行就使用百分号,第一个百分号之前的文本作为命令内容,之后的文本作为标准输入
可以使用分号隔开多个命令
可以使用括号把命令进行封装
举例:
// 表示每周一凌晨2:30到/home/hexy/test目录中运行make命令
30 2 * * 1 (cd /home/itcast/test; make)
// 除了周四、周五之外,每天晚上11:55运行/home/itcast/backup.sh脚本
55 23 * * 0-3,6 /home/itcast/backup.sh
// 每隔2分钟发送一个当前登录用户数量给用户 mari
0-59/2 * * * * root (echo current date `date`>/tmp/count;echo the current user count is:`who | wc -l`>>/tmp/count;write mari < /tmp/count)