视频链接
http://www.imooc.com/learn/216
1. crontab 计划任务
1.1 crontab 是什么
crontab 是一个用于设置周期性执行任务的工具。
被周期性执行的任务称为Cron Job.
周期性执行的任务列表称为Cron Table.
1.2 crontab 实践
1.2.1 crontab 服务与进程
ps -ef | grep cron # 检查crontab进程是否已启动
# 检查定时任务服务是否已启动
service crond status
或者
service cron status
1.2.2 crontab 配置文件
# 查看crontab配置文件的说明
man 5 crontab
# crontab的全局配置文件(格式为* * * * * userName command)
/etc/crontab
# crontab -e 对应的配置文件(格式为* * * * * command)
/var/spool/cron/userName
/var/spool/cron/tabs/userName
# crontab配置文件中的各字段说明如下:
* * * * * command
---------------------------------------------------------
field allowed values
minute 0-59
hour 0-23
day of month 1-31
month 1-12
day of week 0-7(0 or 7 is Sunday)
---------------------------------------------------------
# * 表示任何时候
# A,B,C 表示A或者B或者C
# A-B 表示A到B
# */n 表示每n分钟(或每小时等)
示例:
30 21 * * * command # 每天21:30执行一次命令
45 4 1,10,22 * * command # 每月1, 10, 22日的4:45执行一次命令
45 4 1-10 * * command # 每月1到10日的4:45执行一次命令
*/2 * * * * command # 每两分钟执行一次命令(0, 2, 4, ...)
1-59/2 * * * * command # 每两分钟执行一次命令(1, 3, 5, ...)
1.2.3 crontab查看与编辑
cat /etc/crontab # 查看全局配置文件(/etc/crontab中配置的定时任务不能通过crontab -l 进行查看)
crontab [-u user] -l # 查看当前用户的定时任务列表(-u 表示指定用户)
crontab [-u user] -e # 编辑当前用户的定时任务列表(-u 表示指定用户)
/var/spool/mail/userName # 用户相关的日志信息
1.3 crontab常见错误
# 第三和第五个域之间执行的是“或”操作
示例:
# 四月的第一个星期日01:59执行command, 应该写成
59 1 1-7 4 * test `date +\%w` -eq 0 && command
而不是
59 1 1-7 4 0 command # 表示四月的1到7日每天01:59都执行command
# 分钟设置错误
示例:
# 每两小时执行一次, 应该是
0 */2 * * * command
而不是
* */2 * * * command # 表示每隔两小时,然后每分钟都执行一次
1.4 其他
crontab 定时任务最小单位是分钟,如果要精确到秒或更小,可使用sleep命令来配合完成。
示例:
*/1 * * * * date >> /tmp/date.log
*/1 * * * * sleep 30s; date >> /tmp/date.log
# 说明:通过定义两个定时任务,第二个任务延迟30秒来实现每30秒执行一次任务
# 可通过 tail -100f /tmp/date.log 命令来查看日志变化
# date 命令
date; sleep 5s; date # 显示两次时间,间隔5秒
date "+%w" # 查看当前是星期几(0 - 6)
date "+%Y-%m-%d %H:%M:%S" # 查看当前日期和时间
-- END