zoukankan      html  css  js  c++  java
  • Linux命令集锦:crontab命令

      Linux crontab是用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crontab命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

      而Linux任务调度的工作主要分为以下两类:

    • 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
    •  个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

    一、crontab文件含义

    /etc/crontab文件包括下面几行:

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    
    # For details see man 4 crontabs
    
    # 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

    也可以看下图:

    其中:

    minute: 表示分钟,可以是从0到59之间的任何整数。

    hour:表示小时,可以是从0到23之间的任何整数。

    day:表示日期,可以是从1到31之间的任何整数。

    month:表示月份,可以是从1到12之间的任何整数。

    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

    在以上各个字段中,还可以使用以下特殊字符:

    • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作
    • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

    二、crond服务

    安装crontab:

    yum install crontabs

    服务操作说明:

    /sbin/service crond start     //启动服务
    /sbin/service crond stop     //关闭服务
    /sbin/service crond restart   //重启服务
    /sbin/service crond reload    //重新载入配置

    查看crontab服务状态:

    service crond status

    手动启动crontab服务:

    service crond start

    查看crontab服务是否已设置为开机启动,执行命令:

    ntsysv

    加入开机自动启动:

    chkconfig –level 35 crond on

    三、crontab语法

    语法

    crontab [-u user ] file

    crontab [ -u user ] { -l | -r | -e }

    参数说明

    -u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

    -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)

    -r : 删除目前的时程表

    -l : 列出目前的时程表

    四、使用实例

    1. 每1分钟执行一次/bin/ls

    * * * * * /bin/ls

    2. 每月每天每小时的第 1 分钟执行一次 /bin/ls

    1 * * * * /bin/ls

    3. 每两个小时重启一次apache

    0 */2 * * * /sbin/service httpd restart

    4. 每天7:50开启ssh服务

    50 7 * * * /sbin/service sshd start

    5. 每小时的第3和第15分钟执行

    3,15 * * * * command

    6. 每月1号和15号检查/home 磁盘

    0 0 1,15 * * fsck /home 

    7. 每月每天的0:20,  2:20, 4:20, 6:20…执行 echo "haha"

    20 0-23/2 * * * echo "haha"

    8. 在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup

    0 6-12/3 * 12 * /usr/bin/backup

    9. 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件

    00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} 

    【参考链接】

    [1] runoob的Linux教程.

    [2] peida, 每天一个linux命令(50):crontab命令.

  • 相关阅读:
    快速幂,矩阵乘法,矩阵快速幂
    关于xor
    数位dp
    tarjan,割边,桥,割点
    RMQ,ST表,dp
    逆序对,树状数组,归并排序
    线段树
    dp,LCS
    清北 游
    青蛙的约会(扩展欧几里得)
  • 原文地址:https://www.cnblogs.com/lemonu/p/9762903.html
Copyright © 2011-2022 走看看