• Linux 作业调度器 crond


    linux缺省会启动crond进程,crond进程不需要用户启动、关闭。 
    需要启动/关闭cron
    /sbin/service crond start   --启动服务
    /sbin/service crond stop   --关闭服务
    /sbin/service crond restart  --重启服务
    /sbin/service crond reload   --重新载入配置
    crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。 
    cron的调度文件
    有以下几个:
    crontab
    cron.d
    cron.daily
    cron.hourly
    cron.monthly
    cron.weekly
    如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。
     
    存放文件 
    /etc/cron.deny 文件列出所有不允许使用 crontab命令的用户
    /etc/cron.allow 文件所列的用户允许使用crontab命令
    /var/spool/cron  所有用户的crontab文件
    /var/spool/cron/crontabs 
     
    1、直接用crontab 命令编辑
    cron服务提供 crontab 命令来设定cron
    命令格式为:crontab -l|-r|-e|-u [username]
    参数含义:
    crontab -l 列出某个用户的cron服务内容
    crontab -e 编辑某个用户的cron 的内容
    crontab -r 移除某个用户的cron的所有内容
    crontab -u 设定某用户的cron服务
    命令如:
    root 查看自身的cron设置:crontab -u root -l
    删除用户test的cron设置:crontab -u test -r
     
    内容格式:* * * * *命令前面的五个*号,表示分,时,日,月,周
    如:代表意义   分钟   小时   日期   月份   周
            数字范围   0-59  0-23    1-31  1-12  0-7
     
    例如:#crontab -e59 23 1 5 * mail linuxing < /home/test.txt
    每在5月1日,23点59分就把/home/test.txt的内容作为邮件发给linuxing用户

    */5 * * * * /opt/test.sh    每5分钟就执行一次/opt/test.sh脚本
    0 3,6 * * * /usr/local/bin/test.sh    每在3点和6点整点都执行/usr/local/bin/test.sh命令
    0 8-12 * * * /root/backup.sh   8 点到 12 点之间的每小时的0分都执行/root/backup.sh
    0 */2 * * * echo "Have a break now." >> /tmp/test.txt     每两个小时
    0 23-7/28 * * * echo "Have a good dream:)" >> /tmp/test.txt  晚上11点到早上8点之间每两个小时,早上八点 
    0 11 4 * 1-3 command line    每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
    0 4 1 1 * command line     1月1日早上4点
    01 6 * * * find /home/mysql/databack/* -mtime 30 -print|xargs rm -rf  定时清除 数据库备份

     

    2、编辑/etc/crontab 文件配置cron

     cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。

    此文件的文件格式是:

      SHELL=/bin/bash
      PATH=/sbin:/bin:/usr/sbin:/usr/bin
      MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
      HOME=/ //使用者运行的路径,这里是根目录
      # run-parts
      01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
      02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
      22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
      42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

      大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。

    典型例子:

    定时备份mysql 数据库

    1、crontab -e

    2、01 3 * * * /home/backmysql

    3、vim /home/backmysql

    #!/bin/sh
    
    rq=`date +%Y%m%d`
    
    mysqldump -uroot -p123456 teatop_db --skip-lock-tables >/mysqldata/databack/mysql$rq.sql

    4、/sbin/service crond restart

     

    定时备份redis

    1、crontab -e

    2、01 3 * * * /home/redis.sh

    3、vim /home/redis.sh

    #!/bin/sh
    
    rq=`date +%Y%m%d`
    
    mkdir /mysqldata/redis/redis$rq
    
    cp -R /usr/redisdata/* /mysqldata/redis/redis$rq

    4、service crond restart

     

  • 相关阅读:
    [转]给C++初学者的50个忠告
    [转]代理模式——代理模式的核心思想
    [转]单例模式——C++实现自动释放单例类的实例
    [转]代理模式——何时使用代理模式
    观察者模式——生动的气象信息订阅服务图示
    [转]单例模式——Java中互斥访问单一实例
    [转]C++ const变量使用技巧总结
    [转]用C++设计一个不能被继承的类
    ExtJs2.0学习系列(14)Ext.TreePanel之第三式(可增删改的树)
    ExtJs2.0学习系列(7)Ext.FormPanel之第四式(其他组件示例篇)
  • 原文地址:https://www.cnblogs.com/xoray007/p/3643415.html
Copyright © 2020-2023  润新知