zoukankan      html  css  js  c++  java
  • crontab 安装与配置

    安装方法:

    yum -y install vixie-cron

    yum -y install crontabs

    说明:
    vixie-cron 软件包是 cron 的主程序;
    crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

    启动配置服务:

    service crond start     //启动服务
    service crond stop      //关闭服务
    service crond restart   //重启服务
    service crond reload    //重新载入配置
    service crond status    //查看crontab服务状态
    tail /var/log/cron // 查看日志
    在CentOS系统中加入开机自动启动: chkconfig --level 345 crond on

    cron 的主配置文件是 /etc/crontab,它包括下面几行:

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/

    # run-parts
    01 * * * * root run-parts /etc/cron.hourly
    02 4 * * * root run-parts /etc/cron.daily
    22 4 * * 0 root run-parts /etc/cron.weekly
    42 4 1 * * root run-parts /etc/cron.monthly

    前四行是用来配置 cron 任务运行环境的变量。
    SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell);
    PATH 变量定义用来执行命令的路径。
    cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。
    如果 MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出。
    HOME 变量可以用来设置在执行命令或脚本时使用的主目录。

    限制对 cron 的使用:

    /etc/cron.allow和/etc/cron.deny 文件被用来限制对 cron 的使用。
    这两个使用控制文件的格式都是每行一个用户。
    两个文件都不允许空格。
    如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。
    使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。

    无论使用控制文件中的规定如何,root 都总是可以使用 cron。

    如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。
    如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。

    语法:crontab[-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]
    参数:
    -e 编辑该用户的计时器设置。
    -l 列出该用户的计时器设置。
    -r 删除该用户的计时器设置。
    -u<用户名称>  指定要设定计时器的用户名称。

    格式:
    *   *  *  *  *  command
    分 时 日 月 周  命令

    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令

    例子:

    30 21 * * * /usr/local/etc/rc.d/lighttpd restart
    上面的例子表示每晚的21:30重启apache。

    45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
    上面的例子表示每月1、10、22日的4 : 45重启apache。

    10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
    上面的例子表示每周六、周日的1 : 10重启apache。

    0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
    上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

    0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
    上面的例子表示每星期六的11 : 00 pm重启apache。

    * */1 * * * /usr/local/etc/rc.d/lighttpd restart
    每一小时重启apache

    * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
    晚上11点到早上7点之间,每隔一小时重启apache

    0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
    每月的4号与每周一到周三的11点重启apache

    0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
    一月一号的4点重启apache

    */30 * * * * /usr/sbin/ntpdate 210.72.145.44
    每半小时同步一下时间

    配置定时任务,有两种方法,方法1可以分用户,不同的用户有不同的任务,方法2是系统级的,所有用户都会运行

    方法1:

    使用命令 crontab -e 然后直接编辑定时脚本。

    这样执行以后,属于用户自定义的,会被写到 /var/spool/cron 目录下,生成一个和用户名一致的文件,文件内容就是我们编辑的定时脚本。

    如:root用户的文件就是

    vi /var/spool/cron/root

    方法2:

    使用命令 vi /etc/crontab 编辑定时脚本。

    如:

    vi /etc/crontab

    SHELL=/bin/bash                                                                                                                                                                                             
    PATH=/sbin:/bin:/usr/sbin:/usr/bin                                                                                                                                                                          
    MAILTO=root                                                                                                                                                                                                 
    HOME=/                                                                                                                                                                                                      
                                                                                                                                                                                                                
    # run-parts                                                                                                                                                                                                 
    30 * * * * root /www/dbback.sh                                                                                                                                                            

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name command to be executed
    

    注意方法2这里面需要指定用户名;而方法1中则不需要,方法1如果指定,反而会认为是命令的一部分,从而可能导致crontab执行失败。

    (系统级的)做系统级配置我们会直接配置 /etc/crontab

    (用户级的)一般还是建议大家使用 crontab -e ,这样系统也会帮着检查我们配置的脚本语法。

  • 相关阅读:
    Android学习——day13
    寒假周总结三
    构建之法读书笔记03
    Android学习——day12
    每日日报2020 11/18
    每日日报2020 11/17
    每日日报2020 11/16
    每日日报2020 11/15
    每日日报2020 11/13
    每日日报2020 11/12
  • 原文地址:https://www.cnblogs.com/lbnnbs/p/7231259.html
Copyright © 2011-2022 走看看