Linux中的计划任务—Crontab

1. Crontab是什么?

  Crontab是一个用于设置周期性被执行的任务的工具。

  被周期性执行的任务叫作Cron Job,周期性执行的任务列表我们称为Cron Table。

2. 相关工具

  Putty:一个免费的易用的SSH连接工具(www.putty.org  需FQ)

3. 安装并检查Crontab服务

  1. 检查cron服务

    - 检查Crontab工具是否安装:crontab  -l

    - 检查crond服务是否启动:service  crond  status

  2. 安装cron

    - yum  install  vixie-cron

    - yum  install  crontabs

  3. 案例:每分钟都打印当前时间到一个日志文件中

[root@localhost ~]# crontab -e  # 编辑或添加任务
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost ~]# crontab -l  # 查看任务
*/1 * * * * date >> /tmp/log.txt

[root@localhost ~]# date
Wed Feb  8 20:48:42 CST 2017
[root@localhost ~]# tail -f /tmp/log.txt  # 动态刷新文件末尾
Wed Feb  8 20:49:01 CST 2017
Wed Feb  8 20:50:01 CST 2017
^C
[root@localhost ~]# 

4. Crontab的基本组成

  

5. Crontab的配置文件格式

  

  - 每晚的21:30重启apache:30  21  *  *  *  service  httpd  restart

  - 每月1、10、22日的4:45重启apache:45  4  1,10,22  *  *  service  httpd  restart

  - 每月1到10日的4:45重启apache:45  4  1-10  *  * service  httpd  restart

  - 每隔2分钟重启apache:*/2  *  *  *  *  service  httpd  restart 或者 1-59/2  *  *  *  *  service httpd  restart

  - 晚11点到早7点每隔一小时重启apache:0  23-7/1  *  *  *  service  httpd  restart

  - 每天18:00到23:00每隔30分钟重启apache:0,30  18-23  *  *  *  service  httpd  restart 或者 0-59/30  18-23  *  *  *  service httpd restart

  

 6. Crontab工具的使用

[root@localhost ~]# crontab -help  # 查看crontab的帮助文档
usage:    crontab [-u user] file
    crontab [-u user] [ -e | -l | -r ]
        (default operation is replace, per 1003.2)
    -e    (edit user's crontab)
    -l    (list user's crontab)
    -r    (delete user's crontab)
    -i    (prompt before deleting user's crontab)
    -s    (selinux context)

[root@localhost ~]# crontab -e -u user1  # 编辑用户user1的crontab任务
no crontab for user1 - using an empty one
crontab: installing new crontab
You have mail in /var/spool/mail/root
[root@localhost ~]# crontab -l -u user1  # 查看用户user1的crontab任务
0-58/2 * * * * echo "EVEN*********"
[root@localhost ~]# tail -f /var/log/cron  # 动态刷新正在执行的crontab任务

7. Crontab的配置文件:

   

8. Crontab的日志

  /var/log/cron 文件保存着cron的任务执行记录

  /var/spool/mail 下也会以邮件的方式发送日志信息

9. Crontab常见错误

  1. 环境变量:不可引用环境变量

    1) 进入家目录,打开隐藏文件:. bash_profile

    2) 例如加入:APPROOT=/usr/local/www/

          export APPROOT 并保存退出

    3) 重新载入这个文件:source ./ .bash_profile

    4) echo $APPROOT  就会显示刚才设置的路径

  2. 命令行操作:

    例:4月的第一个星期日早晨1时59分运行a.sh

      59 1 1-7 4 0 /root/a.sh

      59 1 1-7 4 * test `date +\%w` -eq 0 && /root/a.sh

    1) test a = b 或 test a -eq b  如果结果是0则为正确,为1则为错误

    2) 通过echo$? 来查看上一次的执行结果

    3) date +%w 显示今天是星期几

    4) A && B 表示A成立则执行B

  3. 分钟设置有误:

    1) 每两个小时运行一次:

      错误: *  0,2,4,6,8,10,12,14,16,18,20,22 * * *  date

      正确: 0 */2 * * *  date

  4. 综合案例解析:

    按顺序执行:[root@localhost ~]# date;sleep 0.5s;date

    每半分钟执行一次:

      */1 * * * * date >> /tmp/date.log

      */1 * * * * sleep 30s; date >> /tmp/date.log

原文地址:https://www.cnblogs.com/wnzhong/p/6380138.html