zoukankan      html  css  js  c++  java
  • linux下系统定时任务配置----crontab(mysql定时备份)

       crontab命令用于设置周期性被执行的指令,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

      Linux下的任务调度分为两类,系统任务调度(配置文件为:/etc/crontab)和用户任务调度,此处主要介绍用户任务调度。

    • 注意事项:
      1. 当任务在你所指定的时间执行后,系统会寄一封信给你,显示该任务执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可。
      2. %在crontab中被认为是newline,要用来escape才行。比如crontab执行行中,如果有"date +%Y%m%d",必须替换为:"date +\%Y\%m\%d"。
      3. 通过crontab 文件名 方式提交任务时,该文件的一个副本将被放在/var/spool/cron目录中,文件名就是用户名
      3. 当设置完用的的定时任务后建议执行:crontab -l > 文件名,将用户的crontab进行备份,防止意外执行crontab -r 删除掉用户的crontab后可通过备份文件恢复用户的定时任务(执行:crontab 文件名),或者一开始便通过文件的方式提交定时任务。
     
    • 检查cron服务
      • 检查crontab工具是否安装 : crontab -l
      • 检查crond服务是否启动 : service crond status
    • 安装cron
      • yum install vixie-cron
      • yum install crontabs
    • 相关文件介绍
      • /var/spool/cron/{userName} : 代表用户crontab文件
      • /etc/crontab : 代表系统crontab文件
      • /var/log/cron : 保存cron的任务执行记录
      • /var/spool/mail/{userName} : 记录用户邮件日志(定时任务执行后会发送邮件给配置的用户)
    • crontab指令语法介绍(主要用于操作用户crontab文件,位于:/var/spool/cron目录下,文件名与用户名一样,执行-e时自动创建,执行-r时,自动删除该文件)
      • crontab [-u user] file  (以文件方式提交定时任务)
        crontab [-u user] [ -e | -l | -r ]
        • -e    (edit user's crontab),编辑用户crontab文件
        • -l    (list user's crontab),列出用户crontab文件中的cronjob(要执行的定时任务)
        • -r    (delete user's crontab),删除用户crontab文件(删除定时任务)
        • -i    (prompt before deleting user's crontab),删除用户crontab前给与相应提示
    • crontab 文件内容格式介绍(配置定时任务)

      当用户执行crontab -e 时,将编辑用户crontab文件,文件每一行内容代表一个定时任务,他们都有统一的格式:

      • * * * * * comand(*以空格或tab隔开)
        • 第一个* : 分钟(0--59)
        • 第二个* : 小时(0--23)
        • 第三个* : 日期(0--31)
        • 第四个* : 月份(1--12)
        • 第五个* : 星期0--7(0或者7表示星期天)
        • comand : 要执行的操作
      • 举例:
        • 每晚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
        • 每隔两分钟重启apache : */2 * * * * service httpd restart 或者 1-59/2 * * * * service httpd restart
        • 每晚11点到早上7点间,每隔1小时重启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
      • 小结 :
        • * : 表示任何时候匹配
        • 可以用"A,B,C"表示A或者B或者C时执行命令
        • 可以用“A-B”表示A到B之间时执行命令
        • 可以用“/A”,表示每A分钟(小时等)执行一次命令
    • crontab每天备份mysql步骤:

    1、首先创建数据库备份脚本文件(/mysqlBackup/mysqlBackup.sh),如下:

    #!/bin/bash
    
    #根据当前时间生成备份文件名,is ‘(1左边按键) not '
    filename=`date +%Y-%m-%d_%H%M%S`
    
    #要备份的数据库
    DB_name=数据库名称
    
    #存储备份文件目录
    mysql_back_dir="/mysqlBackup/dayBackup"
    
    #存储备份文件的目录不存在则创建
    if [ ! -d $mysql_back_dir ]; then
      mkdir -p $mysql_back_dir
    fi
    
    #执行mysql备份
    /usr/bin/mysqldump -u用户名 -p密码 $DB_name --ignore-table $DB_name.mtd03_gps_history --default-character-set utf8 | gzip > $mysql_back_dir/talkback_db_dev_$filename.sql.gz
    
    #删除30天前的备份文件
    cd $mysql_back_dir
    find . -name '*.sql.gz' -mtime +30 -exec rm -rf {} ;

    2、为脚本添加可执行权限 : chmod -x mysqlBackup.sh

    3、添加任务到crontab定时执行(此处为每天00:00执行),

    执行:crontab -e(相当于执行vi 指令)

    输入 : 0 0 */1 * * /mysqlBackup/mysqlBackup.sh

    保存并退出

    然后通过crontab -l 便可查看到刚刚添加的定时任务了,到此,crontab定时备份mysql便设置完成了








      

  • 相关阅读:
    2018.10.22-ssoi3979荔枝丹(litchi)
    2018.10.18- oj3969 pd
    2018.10.18-ssoj3970 graph
    【2019年8月版】OCP 071认证考试原题-第38题
    【2019年8月版】OCP 071认证考试原题-第37题
    【2019年8月版】OCP 071认证考试原题-第36题
    【2019年8月版】OCP 071认证考试原题-第35题
    【2019年8月版】OCP 071认证考试原题-第34题
    【2019年8月版】OCP 071认证考试原题-第33题
    【2019年8月】OCP 071认证考试最新版本的考试原题-第32题
  • 原文地址:https://www.cnblogs.com/yinz/p/5007123.html
Copyright © 2011-2022 走看看