• linux下cron命令用法


    cron是Linux下的一个定时执行工具,可以在无需人工干预的情况下运行作业。

    在VPS上,cron一般用来执行定时备份任务,非常方便。

    Centos默认已安装cron,但是并不自动运行,可以用以下的方法来启动和设置自动启动:

    复制代码 代码如下:

    #service crond start #启动服务

    #chkconfig crond on   #开机自动启动

    可以用crontab -e命令来编辑/var/spool/cron下对应用户的cron文件,也可以直接编辑/etc/crontab。

    cron的命令格式如下:

    分     小时    日     月      星期     命令

    0-59   0-23   1-31   1-12     0-6     command

    其中,0表示星期日,一行对应一个命令。

    下面举几个例子,基本涵盖了常见的一些情况:

    复制代码 代码如下:

      5       *       *           *     *     ls         指定每小时的第5分钟执行一次ls命令

     30     5       *           *     *     ls         指定每天的 5:30 执行ls命令

    30     7       8           *     *     ls         指定每月8号的7:30分执行ls命令

    30     5       8           6     *     ls         指定每年的6月8日5:30执行ls命令

    30     5       8           6     *     ls         指定每年的6月8日5:30执行ls命令

    30     6       *           *     0     ls         指定每星期日的6:30执行ls命令

    30     3     10,20      *     *     ls         每月10号及20号的3:30执行ls命令

    25     8-11 *            *     *     ls         每天8-11点的第25分钟执行ls命令

      */15   *       *          *     *     ls         每15分钟执行一次ls命令

    30   6     */10          *     *     ls         每个月中,每隔10天6:30执行一次ls命令

    22   4       *             *     *     root     run-parts     /etc/cron.daily

    #每天4:22以root身份执行/etc/cron.daily目录中的所有可执行文件,run-parts参数表示,执行后面目录中的所有可执行文件。

    添加后保存的路径是/var/spool/cron,可以直接用vi查看和修改。

    脚本文件:

    bakTime=` date +%Y%m%d%H%M%S`
    cp /home/test/dump.rdb /home/test/bakRedis/$bakTime.rdb

    linux 下执行.sh文件总是提示permission denied


    如果你是root登陆的话(不是的话,切换到root用户,对*.sh赋可执行的权限) 
    chmod 777 *.sh

     or

    chmod +x  *.sh

    然后运行就OK了

    Crontab用法

    [root@yang1 data]# crontab --help   #<==注:crontab –l –e都是直接操作/var/spool/cron/下当前用户名的文件

    usage: crontab [-u user] file    #<==指定某用户如crontab –u yang2 –e,编辑yang2家目录下的crontab

        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 deletinguser's crontab) #<==删除crontab文件内容,删前会有提示

        -s   (selinux context)

    注:crontab –e 编辑定时任务,退出时可以检查语法,直接编辑/var/spool/cron/root不能。如果大批量添加任务,则使用echo追加。

    cron执行的每一项工作都会被纪录到/var/log/cron这个日志文件中,可以从这个文件查看命令执行的状态。

    4、Crontab命令的书写格式

      *      *     *      *     *    /bin/sh /scripts/yy.sh

      分     时     日     月     周    命令和文件路径

    (00-59)  (0-23)   (1-31)   (1-12)    (0-6)         

     

    所用符号表示意思

    * 星号每的意思

    - 减号连续一段时间,如:00 17-19 * * * cmd  每天下午17点,18点,19点执行一次命令

    , 逗号多个时间段,如:00 10-11,17-19 * * * cmd 每天的上午10,11点整,下午的17,18,19点整执行一次命令

    /n n代表数字,指每隔n时间执行一次,如: */2 * * * * cmd 每隔2分钟执行一次命令

    1)举例:

    30 12-16/2 * ** cmd 

    每天的中午12点到下午4点间,每隔2小时执行一次

    * 23-7/1 * * 25pxd 

    注:这是一个错误的命令

    日和周不能同时用,若要以月为间隔,则日或周必有一个有值

    其它如:小时上有值,则分钟上也要有值

    */1 * * ** echo yangrong >>/var/log/yy > /dev/null 2>&1

    每隔一分钟把yangrong打印到yangrong1文件中,但该命令无法执行,因为>>与>/dev/null不可同时使用

    2)/dev/null 2>&1解释

    0是标准输入    使用<或<<

    1是标准输出    使用>或>>

    2是标准错误输出  使用2>或2>>

    >/dev/null 2>&1  即错误输出与标准输出全部重定向到空,可以写成1>/dev/null 2>/dev/null

    3)关于重定向的作用

    重定向到空可以避免碎片文件占用inode资源

    重定向到一个指定log里,可以看任务是否执行

    4)关于导致磁盘inode满情况分析

    定时任务执行成功or失败时,程序会向上层发送mail,由于平时工作中不打开sendmail功能,所以邮件会存储在临时目录/var/spool/clientmqueue,随着执行的任务次数多,文件也会越来越多,直到某一天,添加文件时,提示No space left on device,主要问题原因不在于垃圾文件会占很大空间,而在于每个文件会占用inode节点。(centos6.4默认不装sendmail,可能不会导致这个问题发生)。

    所以crontab规则后需加 /dev/null 2>&1。

    注:>> 与 >/dev/null 2>&1不可同时存在,不然无法执行

    The Internet is big, really big, like bigger than you thought big.
  • 相关阅读:
    opencv-learnopencv-Facial Landmark Detection
    【OpenCV】Learn OpenCV
    leetcode-1-TwoNums
    【c++基础】判断是否到文件末尾-eof函数
    【c++基础】int转string自动补零
    【linux】如何退出shell终端
    【机器学习算法】bagging算法
    【机器学习算法】Boostrapping算法
    【python基础】如何注释代码块
    【机器学习算法】cascade classifier级联分类器
  • 原文地址:https://www.cnblogs.com/optimus-prime/p/7154559.html
Copyright © 2020-2023  润新知