linux基础知识4-定时任务crontab

视频链接

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

你可能感兴趣的:(linux基础知识4-定时任务crontab)