zoukankan      html  css  js  c++  java
  • Linux下crontab计划任务使用详解

    Linux在相应用户下,用crontab -l 命令可以查看该用户定时执行的任务,-e可以编辑,但是其真实文件在哪儿呢??
    以CentOS为例,其真实的位置在:/var/spool/cron下面,有执行定时任务的用户将会有以该用户命名的一个文档,vim该文档与用命令crontab -l看到的一样。

    crontab命令

    crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。也就是说,用户把需要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件。下面就来看看如何创建一个crontab文件。

    在/var/spool/cron下的crontab文件不可以直接创建或者直接修改。crontab文件是通过crontab命令得到的。现在假设 有个用户名为foxy,需要创建自己的一个crontab文件。首先可以使用任何文本编辑器建立一个新文件,然后向其中写入需要运行的命令和要定期执行的时间。

    然后存盘退出。假设该文件为/tmp/test.cron。再后就是使用crontab命令来安装这个文件,使之成为该用户的crontab文件。键入:

    crontab test.cron

    这样一个crontab 文件就建立好了。可以转到/var/spool/cron目录下面查看,发现多了一个foxy文件。这个文件就是所需的crontab 文件。用more命令查看该文件的内容可以发现文件头有三行信息:

    #DO NOT EDIT THIS FILE -edit the master and reinstall.

    #(test.cron installed on Mon Feb 22 14:20:20 1999)

    #(cron version --$Id:crontab.c,v 2.13 1994/01/17 03:20:37 vivie Exp $)

    如果需要改变其中的命令内容时,还是需要重新编辑原来的文件,然后再使用crontab命令安装。

    可以使用crontab命令的用户是有限制的。如果/etc/cron.allow文件存在,那么只有其中列出的用户才能使用该命令;如果该文件不存 在但cron.deny文件存在,那么只有未列在该文件中的用户才能使用crontab命令;如果两个文件都不存在,那就取决于一些参数的设置,可能是只允许超级用户使用该命令,也可能是所有用户都可以使用该命令。

    crontab命令的语法格式如下:

    crontab [-u user] file

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

    第一种格式用于安装一个新的crontab 文件,安装file所指的文件。

    -u 如果使用该选项,也就是指定了是哪个具体用户的crontab 文件将被修改。如果不指定该选项,crontab 将默认是操作者本人的crontab 。但是请注意,如果使用了su命令再使用crontab 命令很可能就会出现混乱的情况。所以如果是使用了su命令,最好使用-u选项来指定究竟是哪个用户的crontab文件。

    -l 在标准输出上显示当前的crontab。

    -r 删除当前的crontab文件。

    -e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。

    如何输入需要执行的命令和时间

    该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下:

    minute hour day-of-month month-of-year day-of-week commands

    第一项是分钟,第二项是小时,第三项是一个月的第几天,第四项是一年的第几个月,第五项是一周的星期几,第六项是要执行的命令。这些项都不能为空,必须填入。如果用户不需要指定其中的几项,那么可以使用*代替。因为*是统配符,可以代替任何字符,所以就可以认为是任何时间,也就是该项被忽略了。每项的合法范围如下:

    minute 
    00-59 
    hour 
    00-23,其中00点就是晚上12点 
    day-of-month 
    01-31 
    month-of-year 
    01-12 
    day-of-week 
    0-6,其中周日是0 

    除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。几个例子:

    每天早上6点 

    0 6 * * * 
    晚上11点到早上8点之间每两个小时,早上八点 

    0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt 

    每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 

    0 11 4 * 1-3 command 

    5,15,25,35,45,55 16,17,18 * * * command

    这就是表示任意天任意月,其实就是每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。

    在每周一,三,五的下午3:00系统进入维护状态,重新启动系统。那么在crontab 文件中就应该写入如下字段:

    00 15 * * 1,3,5 shutdown -r +5

    然后将该文件存盘为foxy.cron,再键入crontab foxy.cron安装该文件。

    每小时的10分,40分执行用户目录下的innd/bbslin这个指令:

    10,40 * * * * innd/bbslink

    每小时的1分执行用户目录下的bin/account这个指令:

    1 * * * * bin/account

    每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):

    20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)

     每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。

    12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt


    crontab是Unix和Linux用于设置周期性被执行的指令,
    是很常用的技术,很多任务都会设置在crontab循环执行。

    crontab的使用
    语法格式如下:
    crontab [-u user] file
    crontab [-u user] [-l|-e|-r]
    //新建
    crontab file
    安装一个新的crontab 文件,安装file所指的文件,文件位置在/var/spool/cron目录下,系统会自动生成
    一个与用户名同名的crontab文件。
    crontab -l 列出所有crontab
    crontab -e
    编辑crontab的内容,编辑保存后会重新自动安装
    crontab -r
    删除当前的所有crontab
    以上每个命令都可以用-u来指定用户,不加则为当前用户

    crontab的限制
    可以使用crontab命令的用户是有限制的
    如果/etc/cron.allow文件存在,那么只有其中列出的用户才能使用该命令;
    如果该文件不存 在但cron.deny文件存在,那么只有未列在该文件中的用户才能使用crontab命令;
    如果两个文件都不存在,那就取决于一些参数的设置,可能是只允许超级用户使用该命令,也可能是所有用户都可以使用该命令。

    执行的命令和时间

    原文:http://blog.sina.com.cn/s/blog_49f8dc400100tzn7.html

  • 相关阅读:
    Centos 7 zabbix 实战应用
    Centos7 Zabbix添加主机、图形、触发器
    Centos7 Zabbix监控部署
    Centos7 Ntp 时间服务器
    Linux 150命令之查看文件及内容处理命令 cat tac less head tail cut
    Kickstart 安装centos7
    Centos7与Centos6的区别
    Linux 150命令之 文件和目录操作命令 chattr lsattr find
    Linux 发展史与vm安装linux centos 6.9
    Linux介绍
  • 原文地址:https://www.cnblogs.com/jiaoran/p/10316343.html
Copyright © 2011-2022 走看看