zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    linux下FFmpeg编译生成ffplay
    linux下ffmpeg安装
    linux之x86裁剪移植---字符界面sdl开发入门
    Linux忘记开机密码怎么办?
    linux命令--ldconfig和ldd用法
    linux命令之 ifconfig
    Linuxshell脚本之if条件判断
    redis之django-redis
    深刻理解Python中的元类(metaclass)
    【Django错误】OSError: raw write() returned invalid length 14 (should have been between 0 and 7)
  • 原文地址:https://www.cnblogs.com/wnzhong/p/6380138.html
Copyright © 2011-2022 走看看