zoukankan      html  css  js  c++  java
  • 每天一个Linux命令(44)crontab命令

        crontab命令被用来提交和管理用户需要周期性执行的任务,与windows下的计划任务类似。

        (1)用法:

        用法: crontab  [-u user]  file

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

        (2)功能:

        功能:  当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。  

                 在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。

        (3)选项参数:

          1) -l         列出当前计时器的设置,查看定时运行的程序

          2) -e             编辑该用户的计时器设置,设置计时器

          3) -r        删除该用户的计时器设置

          4) -u<用户名称>  指定要设定计时器的用户名称

            

        (4)实例:(此命令用的不常,在此简要介绍)

          1)每1分钟执行一次command

    * * * * * command

          2)每五分钟执行一次命令

     */5 * * * * command

         3)在每天的17:00执行这个命令

    00 17 * * *  command

          4)在8:02,11:02,14:02,17:02,20:02 执行,在8点到20点的时间内,每三个小时执行一下命令

    2 8-20/3 * * * command

         以后会讨论crondtab的几个用法:

         *创建一个新的crontab文件:

      1.进入 /var/spool/cron目录下(目录为空表明当前系统内没有任何Linux计划任务需要执行)

    [root@localhost /]# cd /var/spool/cron
    [root@localhost cron]# ll
    总用量 0

         *列出crontab文件:

         2.用crontab自带的命令crontab -l 发现也是没有任何东西()

    [root@localhost cron]# crontab -l
    no crontab for root

         *编辑crontab文件;

        3.如果目录已经存在指定的文件(文件名为当前用户名),则crontab -e 命令编辑它,否则创建新的文件。cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次 /etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。

    */2 * * * * ls -l /home/sunjimeng/Documents > root.txt
    * * * * * echo "I am MenAngel" > root.txt

         *删除crontab文件;

         恢复丢失的crontab文件;  

        (5)其他:

        1.什么是Windows的计划任务?

          在Windows中,系统有一项重要的“计划任务”功能,通过设置“计划任务”,你可以将每天或某一天的某个时间需要做的事拟成计划,到约定的时间,不管你在电脑上进行什么工作,系统都会提醒你或者启动你设定好的任务程序。

        2.crontab的简介:

          crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

        3.crontab文件:  

      crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值。

        4.Linux下的任务调度

          Linux下的任务调度分为两类:系统任务调度和用户任务调度。

          系统任务调度:  系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件:

    [root@localhost /]# cat /etc/crontab
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    
    # 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

          前三行是用来配置crond任务运行的环境变量。第一行SHELL变量指定了系统要使用哪个shell,这里是bash;第二行PATH变量指定了系统执行命令的路径;第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户。

     *: 表示任何时刻
      ,: 表示分割
    -:表示一个段,如第二端里: 1-5,就表示1到5点
     /n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.

          用户任务调度:  用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致。

    [root@localhost /]# cd /var/spool/cron
    [root@localhost cron]# ll
    总用量 0
    /etc/cron.deny       该文件中所列用户不允许使用crontab命令 
    /etc/cron.allow      该文件中所列用户允许使用crontab命令
    /var/spool/cron/    所有用户crontab文件存放的目录,以用户名命名

        5.crond服务

       1)安装crontab:

      yum install crontabs

          服务操作说明:

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

      查看crontab服务状态:  service crond status

    [root@localhost sunjimeng]# service crond status
    Redirecting to /bin/systemctl status  crond.service
    crond.service - Command Scheduler
       Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
       Active: active (running) since 五 2016-05-27 23:11:47 PDT; 1 weeks 5 days ago
     Main PID: 1303 (crond)
       CGroup: /system.slice/crond.service
               └─1303 /usr/sbin/crond -n
    
    5月 27 23:11:47 localhost.localdomain systemd[1]: Started Command Scheduler.
    5月 27 23:11:47 localhost.localdomain crond[1303]: (CRON) INFO (RANDOM_DELAY...
    5月 27 23:11:48 localhost.localdomain crond[1303]: (CRON) INFO (running with...
    Hint: Some lines were ellipsized, use -l to show in full.

      手动启动crontab服务:  service crond start

    [root@localhost sunjimeng]# service crond start
    Redirecting to /bin/systemctl start  crond.service

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

    [root@localhost sunjimeng]# ntsysv

           输入上述命令后,centOS弹出下面的页面:

      *加入开机自动启动:  chkconfig –level 35 crond on(以后再介绍)

          *要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start即可。

  • 相关阅读:
    使用Java ImageIO类进行批量图片格式转换(转载)
    ORA00980 同义词转换不再有效(ORA00980: synonym translation is no longer valid) (转)
    如何截取字符串
    不能执行已释放 script 的代码(个人碰到的问题)
    查询某个用户下的表
    js验证密码强度
    查看表空间的sql语句
    JavaScript变量提升、作用域
    PL/SQL developer 显示所有数据
    js只能输入数字,小数点(整理)
  • 原文地址:https://www.cnblogs.com/MenAngel/p/5573297.html
Copyright © 2011-2022 走看看