精华内容
下载资源
问答
  • crontab命令详解
    千次阅读
    2021-08-07 12:16:31

    crontab 概念

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

    一、检查 crontab 服务是否安装

    下面的命令 如果显示 ‘no crontab for root’ 或者 显示当前的任务列表 或者 不报错 那说明已经安装,

    crontab -l

    1、如果没有安装 cron 服务

    Centos

    yum -y install vixie-cron crontabs

    ubuntu

    apt-get install cron

    2、cron 服务的启动与关闭

    centos

    # 查看cond 状态
    service crond status
    
    # 启动cron
    service crond start
    
    # 关闭cron
    service crond stop
    
    # 重启cron
    service crond restart
    

    ubuntu

    # 查看cond 状态
    service cron status
    
    # 启动cron
    service cron start
    
    # 关闭cron
    service cron stop
    
    # 重启cron
    service cron restart

    二、crontab 命令

    1.命令格式:

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

    2.命令功能:

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

    3.命令参数:

    -u user:用来设定某个用户的crontab服务,
       例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
    file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
          如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,
          并将它们载入crontab。
    -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
    -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
    -r:从/var/spool/cron目录中删除某个用户的crontab文件,
        如果不指定用户,则默认删除当前用户的crontab文件。
    -i:在删除用户的crontab文件时给确认提示。

    4、crontab 文件格式

    每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

    minute   hour   day   month   week   command
    # 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  表示星期(0 或 7 表示星期天)
    |  |  |  |  |  .------------------- username  以哪个用户来执行 
    |  |  |  |  |  |            .------ command  要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
    |  |  |  |  |  |            |
    *  *  *  *  * user-name  command to be executed

    格式示例:

    格式说明
    */1 * * * * service httpd restart    每一分钟 重启httpd服务
    0 */1 * * * service httpd restart    每一小时 重启httpd服务
    30 21 * * * service httpd restart    每天 21:30 分 重启httpd服务
    26 4 1,5,23,28 * * service httpd restart    每月的1号,5号 23 号 28 号 的4点26分,重启httpd服务
    26 4 1-21 * * service httpd restart    每月的1号到21号 的4点26分,重启httpd服务
    */2 * * * * service httpd restart    每隔两分钟 执行,偶数分钟 重启httpd服务
    1-59/2 * * * * service httpd restart    每隔两分钟 执行,奇数 重启httpd服务
    0 23-7/1 * * * service httpd restart    每天的晚上11点到早上7点 每隔一个小时 重启httpd服务
    0,30 18-23 * * * service httpd restart    每天18点到23点 每隔30分钟 重启httpd服务
    0-59/30 18-23 * * * service httpd restart    每天18点到23点 每隔30分钟 重启httpd服务
    59 1 1-7 4 * test 'date +\%w' -eq 0 && /root/a.sh    四月的第一个星期日 01:59 分运行脚本 /root/a.sh ,命令中的 test是判断,%w是数字的星期几

    5、小结:

    *表示任何时候都匹配
    "a,b,c" 表示a 或者 b 或者c 执行命令
    "a-b" 表示a到b 之间 执行命令
    "*/a" 表示每 a分钟(小时等) 执行一次
    crontab 不能编辑系统级的 任务
    其他需求 : crontab 最小执行时间是分钟,如果是需要 半分钟执行,如果实现呢?,看如下:

    每30秒 把时间写入 /tmp/cron.txt 文件
     

    */1 * * * * data >> /tmp/cron.txt
    */1 * * * * sleep 30s;data >> /tmp/cron.txt

    三、crontab 的配置文件

    文件说明
    /etc/crontab    全局配置文件
    /etc/cron.d    这个目录用来存放任何要执行的crontab文件或脚本
    /etc/cron.deny    该文件中所列用户不允许使用crontab命令
    /etc/cron.allow    该文件中所列用户允许使用crontab命令
    /var/spool/cron/    所有用户crontab文件存放的目录,以用户名命名,比如你是root 用户,那么当你添加任务是,就会在该路径下有一个root文件。
    /etc/cron.deny    该文件中所列用户不允许使用crontab命令
    /var/log/cron    crontab 的日志文件

    四、注意事项

    1、环境变量

    环境变量的值,在crontab 文件中获取不到,所以要注意,可以写脚本

    2、%

    在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%

    `59 1 1-7 4 * test 'date +\%w' -eq 0 && /root/a.sh `

    更多相关内容
  • 本篇文章主要介绍了Linux定时执行任务at和crontab命令这两个命令的基本用法和区别,一起学习下。
  • Crontab 命令详解

    万次阅读 多人点赞 2017-10-19 16:26:04
    Crontab 概念crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中(是“cron table”的简写),以供之后读取和执行。该词来源...

    Crontab 概念

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

    简单点说:就是和闹钟的概念类似。就是定时执行

    一、检查 crontab 服务是否安装

    下面的命令 如果显示 ‘no crontab for root’ 或者 显示当前的任务列表 或者 不报错 那说明已经安装,
    crontab -l

    1、如果没有安装 cron 服务

    Contos
    yum -y install vixie-cron crontabs
    ubuntu
    apt-get install cron

    2、cron 服务的启动与关闭

    Contos
    # 查看cond 状态
    service crond status
    
    # 启动cron
    service crond start
    
    # 关闭cron
    service crond stop
    
    # 重启cron
    service crond restart
    
    Ubuntu
    # 查看cond 状态
    service cron status
    
    # 启动cron
    service cron start
    
    # 关闭cron
    service cron stop
    
    # 重启cron
    service cron restart

    二、crontab 命令

    1.命令格式:

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

    2.命令功能:

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

    3.命令参数:

    -u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
    file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
    -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
    -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
    -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
    -i:在删除用户的crontab文件时给确认提示。

    4、crontab 文件格式

    每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
    minute   hour   day   month   week   command
    # 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  表示星期(07 表示星期天)
    |  |  |  |  |  .------------------- username  以哪个用户来执行 
    |  |  |  |  |  |            .------ command  要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
    |  |  |  |  |  |            |
    *  *  *  *  * user-name  command to be executed
    格式示例:
    格式说明
    */1 * * * * service httpd restart每一分钟 重启httpd服务
    0 */1 * * * service httpd restart每一小时 重启httpd服务
    30 21 * * * service httpd restart每天 21:30 分 重启httpd服务
    26 4 1,5,23,28 * * service httpd restart每月的1号,5号 23 号 28 号 的4点26分,重启httpd服务
    26 4 1-21 * * service httpd restart每月的1号到21号 的4点26分,重启httpd服务
    */2 * * * * service httpd restart每隔两分钟 执行,偶数分钟 重启httpd服务
    1-59/2 * * * * service httpd restart每隔两分钟 执行,奇数 重启httpd服务
    0 23-7/1 * * * service httpd restart每天的晚上11点到早上7点 每隔一个小时 重启httpd服务
    0,30 18-23 * * * service httpd restart每天18点到23点 每隔30分钟 重启httpd服务
    0-59/30 18-23 * * * service httpd restart每天18点到23点 每隔30分钟 重启httpd服务
    59 1 1-7 4 * test 'date +\%w' -eq 0 && /root/a.sh四月的第一个星期日 01:59 分运行脚本 /root/a.sh ,命令中的 test是判断,%w是数字的星期几

    5、小结:

    • *表示任何时候都匹配
    • "a,b,c" 表示a 或者 b 或者c 执行命令
    • "a-b" 表示a到b 之间 执行命令
    • "*/a" 表示每 a分钟(小时等) 执行一次
    • crontab 不能编辑系统级的 任务
    其他需求 : crontab 最小执行时间是分钟,如果是需要 半分钟执行,如果实现呢?,看如下:

    每30秒 把时间写入 /tmp/cron.txt 文件

    */1 * * * * data >> /tmp/cron.txt
    */1 * * * * sleep 30s;data >> /tmp/cron.txt

    三、crontab 的配置文件

    文件说明
    /etc/crontab全局配置文件
    /etc/cron.d这个目录用来存放任何要执行的crontab文件或脚本
    /etc/cron.deny该文件中所列用户不允许使用crontab命令
    /etc/cron.allow该文件中所列用户允许使用crontab命令
    /var/spool/cron/所有用户crontab文件存放的目录,以用户名命名,比如你是root 用户,那么当你添加任务是,就会在该路径下有一个root文件。
    /etc/cron.deny该文件中所列用户不允许使用crontab命令
    /var/log/croncrontab 的日志文件

    四、注意事项

    1、环境变量

    环境变量的值,在crontab 文件中获取不到,所以要注意,可以写脚本

    2、%

    在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%
    `59 1 1-7 4 * test 'date +\%w' -eq 0 && /root/a.sh `

    正文到此结束,如果觉得有用,点个赞可否!!!!!
    博客:http://www.lrshuai.top/blog

    展开全文
  • Linux crontab命令详解

    千次阅读 2022-03-29 08:29:27
    crontab:定时任务的守护进程,精确到分,设计秒的我们一般写脚本 -->相当于闹钟 日志文件: ll /var/log/cron* ...1.常见命令参数 usage: crontab [-u user] file crontab [-u user] [ -e | -l | -r ]

    crontab:定时任务的守护进程,精确到分,设计秒的我们一般写脚本 -->相当于闹钟
    日志文件: ll /var/log/cron*
    编辑文件: vim /etc/crontab
    进程:ps -ef | grep crond ==> /etc/init.d/crond restart
    作用:定时备份,实时备份

    1.常见命令参数

    usage:  crontab [-u user] file
            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 deleting user's crontab)
            -s      (selinux context)
    

    2.定时任务分类

    Linux下的任务调度分为两类,系统任务调度和用户任务调度。
    系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。
    在/etc/crontab文件,这个就是系统任务调度的配置文件。
    用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。
    用户可以使用 crontab 工具来定制自己的计划任务。
    在crontab 文件都被保存在/var/spool/cron目录中。其文件名与用户名一致

    1.系统定时任务:例如清理系统日志,清理系统缓存   -->不过多的关注
        查询系统定时处理任务的路径:
            路径1:
                cd /etc/logrotate.d/        -->可以写定时任务
                less syslog 
            路径2:
                cat /etc/crontab   -->不推荐使用,但是可以看格式
            路径3:
                 ls /etc/ | grep cron*
                     anacrontab
                     cron.d                 -->同路径2 ,可以写定时任务  
                     cron.daily
                     cron.deny              -->控制普通用户使用定时任务crontab
                     cron.hourly
                     cron.monthly
                     crontab
                     cron.weekly
    2.用户的定时任务      -->关注重点
    

    3.crontab文件内容分析

    cat /etc/crontab
    From cnblogs.com

    前四行是用来配置crond任务运行的环境变量

    第一行SHELL变量指定了系统要使用哪个shell,这里是bash

    第二行PATH变量指定了系统执行命令的路径

    第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户

    如果MAILTO变量的值为空,则表示不发送任务执行信息给用户

    第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。

    星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。

    小 结:
    数字的表示最好用2为阿拉伯数字显示
    周和日最好不要同时用
    定时任务要加注解
    可以定向到日志文件或者空文件
    定时任务一定是绝对路径,且目录必须存在才能出结果
    crontab 服务一定要开启运行

    4.crontab日志路径

    # 【日志是按照天排列的】
    ll /var/log/cron*
        /var/log/cron只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息则linux会每次都发邮件到该用户下。
    

    From cnblogs.com

    less /var/spool/mail/root
    

    From cnblogs.com

    5.常用的命令展示

    • 安装crontab:

      yum install crontabs
      
    • crontab服务操作说明:

      /sbin/service crond start //启动服务
      
      /sbin/service crond stop //关闭服务
      
      /sbin/service crond restart //重启服务
      
      /sbin/service crond reload //重新载入配置
      
    • 查看crontab服务状态:

      service crond status
      
    • 手动启动crontab服务:

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

      方法一: 界面启动      ntsysv 
      方法二: 加入开机自动启动:   chkconfig –level 35 crond on
      
    • crontab -l查看定时任务列表

      编辑定时任务

      crontab –e
      
      ==》vim /var/spool/cron/root
      

      每隔2分钟输出时间到文件

      */2 * * * * echo `date` >> $HOME>test.txt
      

      crontab -r 删除定时任务

      ==> 从/var/spool/cron目录中删除用户的crontab文件
      ==> 如果不指定用户,则默认删除当前用户的crontab文件
       crontab –i  在删除用户的crontab文件时给确认提示
      

      备份crontab文件

      crontab -l > $HOME/mycron
      

      恢复丢失的crontab文件

      如果不小心误删了crontab文件,假设你在自己的$home目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名。如果由于权限问题无法完成拷贝,可以用:
      crontab <filename> 其中,<filename>是你在$home目录中副本的文件名。
      有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按<Ctrl-D>,否则你将丢失crontab文件。
      

      每小时执行/etc/cron.hourly目录内的脚本

      0 * * * * root run-parts /etc/cron.hourly
      

      每隔2分钟同步一次互联网时间

      echo "*/2 * * * * /usr/bin/ntpstat time.windows.com >/dev/null 2>&1" >> /var/spool/cron/root
      

      每天3-5,17-20每隔30分钟执行一次脚本

      echo "*/30 [3-5],[17-20] * * * /bin/sh /home/omc/h.sh >/dev/null 2>&1" >> /var/spool/cron/root
      

      当天23点,第二天0点到凌晨7点 每隔1分钟执行一次脚本

      * 23,00-07/1 * * * /bin/sh /home/omc.h.sh
      

      每年的4月份每周的周一到周三的11点执行脚本

      00 11 *  4 1-3 /bin/sh /home/omc/h.sh
      
    1. crontab的注意事项

      • 注意环境变量问题

        在crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置

        # 脚本中涉及文件路径时写全局路径;
        # 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:
        cat start_cbp.sh
        #!/bin/sh
        source /etc/profile
        export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
        /usr/local/jboss-4.0.5/bin/run.sh -c mev &
        
        # 当手动执行脚本OK,但是crontab死活不执行时。可以尝试在crontab中直接引入环境变量解决问题。
        0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh
        
      • 系统级任务调度与用户级任务调度

        root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,
        需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,
        即使在root用户下创建一个定时重启系统的任务也是无效的。
        
      • 其他注意事项

        当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。
        
        或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
        千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。
        删除了该用户的所有crontab都没了。
        
        在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,
        如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’
        
      • 生产调试定时任务

        1.增加执行任务的频率调试
        2.调整系统时间调试任务,提前5分钟   -->不用于生产环境
        3.通过脚本日志输出调试定时 任务
        4.注意一些任务命令带来的问题        -->确保命令的正确性
        
      • crontab箴言

        1.环境变量问题,例如crontab不能识别Java的环境变量
            crontab执行shell时,只能识别为数不多的环境变量,普通的环境变量是无法识别的,
            所以在编写shell时,最好使用export重新声明变量,确保脚本执行。 
        2.命令的执行最好用脚本
        3.脚本权限加/bin/sh,规范路径/server/scripts
        4.时间变量用反斜线转义,最好用脚本
        5.定时任务添加注释
        6.>/dev/null 2>&1   ==>&>/dev/null,别随意打印日志文件
        7.定时任务里面的程序脚本尽量用全路径
        8.避免不必要的程序以及命令输出
        9.定时任务之前添加注释
        10.打包到文件目录的上一级
        

    版权声明

    作者:返回主页# 小a玖拾柒

    出处:https://mp.weixin.qq.com/s/-piIePCzktTwyjCKlZumhg

    未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.

    展开全文
  • 1. crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认... 参考链接:Linux定时任务Crontab命令详解 - 那啥快看 - 博客园

    1. crond简介

    crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

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

    crontab 时间格式如下:

    minute hour day month week command

    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字段,表示每十分钟执行一次。

    • 在线测试工具,很好用:

    在线crontab表达式执行时间计算 - 码工具

    2. crond服务

    常用命令

    crontab -e            #编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

    crontab -l             #显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

    crontab -r            #从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

    crontab -ir            #在删除用户的crontab文件时给确认提示。

    crontab命令位置

    /var/spool/cron

    所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

    使用实例

    实例1:每1分钟执行一次command命令:
    */1 * * * *  command

    若执行多个命令,用;分隔开 

    */1 * * * * source /etc/profile; sh /home/pentaho/pentaho-server/auto_monitor_server.sh
     

    实例2:每小时的第3和第15分钟执行
    命令:
    3,15 * * * * command

    实例3:在上午8点到11点的第3和第15分钟执行
    命令:
    3,15 8-11 * * * command

    实例4:每隔两天的上午8点到11点的第3和第15分钟执行
    命令:
    3,15 8-11 */2 * * command

    实例5:每个星期一的上午8点到11点的第3和第15分钟执行
    命令:
    3,15 8-11 * * 1 command

    实例6:每月1、10、22日的4 : 45重启smb 
    命令:
    45 4 1,10,22 * * /etc/init.d/smb restart


    实例7:每天18 : 00至23 : 00之间每隔30分钟重启smb 
    命令:
    0,30 18-23 * * * /etc/init.d/smb restart


    实例8:晚上11点到早上7点之间,每隔一小时重启smb 
    命令:
    * 23-7/1 * * * /etc/init.d/smb restart

    实例9:每月的4号且是周一到周三的11点重启smb 
    命令:
    0 11 4 * 1-3 /etc/init.d/smb restart

    实例10:设置每两周的周末执行

    10 0 8-14,22-28 * * if [ `date '+\%w'` = "0" ]; then sh  /root/test.sh;fi

    需要增加判断语句来检测是否是周日,%是特殊字符需要加\

    实例11:从第3分钟开始,每隔5分钟执行

    3-59/3 * * * * 

    3. 任务报错

    • 设置定时任务crontab时,任务执行报错如下:

    sudo: sorry, you must have a tty to run sudo

    原因 :

      导致这问题的原因是 sudo默认需要在 tty终端里才能正确被调用,我们可以通过修改 /etc/sudoers配置文件来解决这个问题:
      visudo /etc/sudoers
      注释掉 Default requiretty 一行

      这个问题也有可能发生在使用 crontab定制的任务计划里面需要调用 sudo命令的情况。

    • crontab中启动的shell脚本不能正常运行,但是使用手动执行没有问题 

          使用crontab设置spark任务定时执行,发现手动执行spark任务命令没问题,设置crontab时无响应。在脚本中添加环境变量解决问题,如下。

    source /etc/profile
    nohup spark2-submit  --class org.apache.spark.examples.SparkPi  --master yarn-cluster --deploy-mode cluster --num-executors 15 --driver-memory 8g --executor-memory 12g /opt/cloudera/parcels/SPARK2/lib/spark2/examples/jars/spark-examples_2.11-2.4.0.cloudera2.jar  100 > /home/spark/spark_log  2>&1

            出现这种shell脚本没有执行的问题时,多数都是环境变量设置和绝对路径的问题。因为cront进程不会自动加载用户目录下的.profile文件,所以在脚本第一行写上source /etc/profile。

           当spark命令运行时间较长时,使用kettle的ssh组件运行任务,datanode节点服务器会把该进程挂起,任务即使执行成功也无法返回状态,导致job作业一直显示running状态。给spark命令添加了nohup 参数后解决这个问题。nohup表示无挂起的shell命令。

     参考链接:Linux定时任务Crontab命令详解 - 那啥快看 - 博客园

     

    展开全文
  • crontab 命令详解

    2021-05-31 16:04:34
    crontab crontab 有很多s操作,可玩性挺高的,可以开机运行程序,可以提醒自己喝水,可以发邮件骚扰上司,甚至可以发邮件关爱女朋友 ,值得一学。...每一分钟执行一次命令:* * * * * run command 每十分钟执行一
  • crontab命令详解(转)

    2021-07-01 16:37:26
    crontab命令详解 linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也...
  • linux crontab 命令详解

    2021-05-16 00:19:17
    linux crontab 命令详解使用方式 :crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }说明 :crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。...
  • Linux crontab 命令 Linux crontab是用来定期执行程序的命令。 当安装完成操作系统之后,默认便会启动此任务调度命令。 crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。 ...
  • crontab命令详解 含启动/重启/停止

    千次阅读 2021-08-17 11:31:10
    另 外,由于使用者自己也可以设置计划任务,所以,Linux系统也提供了使用者控制计划任务的命令:crontab命令。 一、crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows...
  • 用户自己设置的计划任务则使用 命令。在 Ubuntu/Debian 中,配置文件路径为 (CentOS也类似),其内容为: 环境变量用于指定系统要使用的shell,此处为。 环境变量指定了系统执行命令的路径。 也可以添加变量,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,186
精华内容 4,074
关键字:

crontab命令详解