我的编程空间,编程开发者的网络收藏夹
学习永远不晚

踩坑记录之crontab每10秒执行一次问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

踩坑记录之crontab每10秒执行一次问题

目录
  • crontab每10秒执行一次问题
  • linux crontab使用技巧
    • crontab命令格式
    • 特殊字段说明
    • 每天晚上10点运行rumenz.sh脚本
    • 每月的1,3,7的早上8.30运行rumenz.sh
    • 每周六,日的的凌晨2点执行rumenz.sh
    • 每天的的18点到23点每30分执行rumenz.sh
    • 每天凌晨2点访问一个网址
    • crontab每10秒执行一次rumenz.sh
    • 每 90 分钟运行一次rumenz.sh
    • 每90秒执行一次rumenz.sh
  • 总结

    crontab每10秒执行一次问题

    需求:linux中使用crontab每十秒执行一次

    场景:需要在Ubuntu14服务器中使用代理每十秒执行一次curl来访问互联网,来测试代理网络稳定性。

    经过网上的大量搜贴之后得到的可用的一个结论如下:

    # crontab -e
    * * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 20; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 30; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 40; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 50; /usr/local/cc.sh >>/usr/local/log.
    
    
    

    如果你是直接一梭子全复制,改下目录那么恭喜你完成了计划任务。而我就不是了,我只写了sleep 10 这条然后任务没有执行。这就是坑。

    坑1 .上面sleep 10 20 30 ...是啥意思啊,怎么个规则啊。一头雾水,当时我是直接把第二个sleep 10 那个定时任务直接粘进去的。然后,任务没有执行就一直纠结任务没有执行这个问题。

    坑2.ubuntu系统第一次使用crontab -e 需要选择比编辑器,如果选nano上,对我这种小白可就蒙圈。最后在命令行使用, select-ediort 来选择编辑器选3 vim 就好了

    后来,明白后做了实验。

    如果只写前两条的话是:在每分钟的第一秒和第一个10秒执行一次

     * * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
     * * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1

    踩坑记录之crontab每10秒执行一次问题

    踩坑记录之crontab每10秒执行一次问题

    以此类推只写前三的话就是:

    在每分钟的第一、第一个十秒、第二个十秒分别执行一次

    * * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 20; /usr/local/cc.sh >>/usr/local/log.txt 2>&1

    如果都写上的话就是每十秒执行一次啦,完美过程

    踩坑记录之crontab每10秒执行一次问题

    过程遇到的问题(1):crontab -e 完都有新邮件

    踩坑记录之crontab每10秒执行一次问题

    原因:

    1.crontab 每次执行完程序产生的输出都会发邮件到/var/mail/root

    2.定时任务语法有误,/var/mail/root  发送的是错误日志,如下

    root@bogon:/usr/local# tail -20 /var/mail/root  

    From root@bogon Tue May 21 18:31:11 2019Return-Path: <root@bogon>X-Original-To: rootDelivered-To: root@bogonReceived: by bogon (Postfix, from userid 0) id AAFCB43077; Tue, 21 May 2019 18:31:11 +0800 (CST)From: root@bogon (Cron Daemon)To: root@bogonSubject: Cron <root@bogon> sleep 10; sh /home/liuxin/curl-status.sh >dev/null 2>&1Content-Type: text/plain; charset=ANSI_X3.4-1968X-Cron-Env: <SHELL=/bin/sh>X-Cron-Env: <HOME=/root>X-Cron-Env: <PATH=/usr/bin:/bin>X-Cron-Env: <LOGNAME=root>Message-Id: <20190521103111.AAFCB43077@bogon>Date: Tue, 21 May 2019 18:31:11 +0800 (CST) /bin/sh: 1: cannot create dev/null: Directory nonexistent

    解决:

    如果是1的话就放到黑洞  >/dev/null 2>&1

    * * * * * /usr/local/cc.sh >/dev/null 2>&1

    精讲:

    1,/dev/null是linux系统的一个垃圾桶(一个不正经的比喻)有不用的输出都可以往里面扔。>/dev/null 缺省默认是1 即 1>/dev/null    

    2,linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2    2>&1就是把2错误输出重定向到1标准输出  而1又输出到/dev/null黑洞

    如果不想输出到一个文件可以这样写

    * * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1

    过程中遇到的问题(2):如图crontab -e 后是新文件

    踩坑记录之crontab每10秒执行一次问题

    解决:crontab语法错误再三检查后,建议select-editor 选3  vim

    linux crontab使用技巧

    crontab命令主要用于设置命令行或者脚本周期性的执行。该命令从标准输入设备读取指令,并将其存放于文件中,以供之后读取和执行。

    主要讲述crontb命令的基本语法和配置方法。

    crontab命令格式

    crontab [-u user] -e -l -r
    • -u 用户名,不加-u参数默认为当前用户。
    • -e 编辑crontab文件。
    • -l 列出crontab文件中的内容。取值来源为/var/spool/cron下对应的文件
    • -r 删除crontab文件。

    crontab命令格式

    # 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
    | | | | |
    * * * * * command/script

    一个定时任务的配置共包括6个字段,分别是分、时、日、月、周、命令行或脚本,每一列取值的范围或者含义如上述格式中注释描述。

    特别注意一点是命令行或者脚本一定要配置成绝对路径。

    特殊字段说明

    • 星号(*):代表所有可能的值,例如在第1列表示每分钟执行,第2列表示每小时执行,第3列表示每天执行。
    • 逗号(,):可以用逗号隔开的值表示指定一个列表范围,例如,在第1列设置15,30,45表示在第15分钟、30分钟、45分钟执行。
    • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如"2-6"表示2,3,4,5,6
    • 正斜线(/):可以用正斜线指定时间的间隔频率,例如第2列设置成"*/2",表示每两小时执行一次。

    每天晚上10点运行rumenz.sh脚本

    0 22 * * * /root/rumenz.sh

    每月的1,3,7的早上8.30运行rumenz.sh

    >
    

    每周六,日的的凌晨2点执行rumenz.sh

    > 0 2 * * 6,0 /root/rumenz.txt

    每天的的18点到23点每30分执行rumenz.sh

    0,30 18-23 * * /root/rumenz.sh
    
    //或者
    
    */30 18-23 * * /root/rumenz.sh

    每天凌晨2点访问一个网址

    > 0 2 * * * /usr/bin/curl https://rumenz.com

    crontab每10秒执行一次rumenz.sh

    * * * * * /root/rumenz.sh
    * * * * * sleep 10;/root/rumenz.sh
    * * * * * sleep 20;/root/rumenz.sh
    * * * * * sleep 30;/root/rumenz.sh
    * * * * * sleep 40;/root/rumenz.sh
    * * * * * sleep 50;/root/rumenz.sh

    每 90 分钟运行一次rumenz.sh

    0 0-21/3 * * * /root/rumenz.sh
    30 0-22/3 * * * /root/rumenz.sh

    需要两个表达式实现

    每90秒执行一次rumenz.sh

    */3 * * * * /root/rumenz.sh
    */3 * * * * sleep 90;/root/rumenz.sh

    需要两个表达式实现

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    踩坑记录之crontab每10秒执行一次问题

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    踩坑记录之crontab每10秒执行一次问题

    目录crontab每10秒执行一次问题linux crontab使用技巧crontab命令格式特殊字段说明每天晚上10点运行rumenz.sh脚本每月的1,3,7的早上8.30运行rumenz.sh每周六,日的的凌晨2点执行rumenz.s
    2023-04-07

    crontab每10秒执行一次问题怎么解决

    这篇文章主要介绍“crontab每10秒执行一次问题怎么解决”,在日常操作中,相信很多人在crontab每10秒执行一次问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”crontab每10秒执行一次
    2023-07-05

    编程热搜

    目录