设为首页 收藏本站
查看: 1606|回复: 1

[经验分享] Centos定制任务Crontab文件

[复制链接]

尚未签到

发表于 2019-4-17 18:37:07 | 显示全部楼层 |阅读模式
  这个文章忘了抄的谁的了,在电脑看见了就发出来了!!
  前言
  工作中需要开启一个定时任务:每天晚上2点进行爬虫代码的运行,这不得不去学习一下linux 下的定时任务crontab
  crontab
  yum install crontabs
  说明:
  /sbin/service crond start //启动服务
  /sbin/service crond stop //关闭服务
  /sbin/service crond restart //重启服务

  /sbin/service crond>  查看crontab服务状态:service crond status
  手动启动crontab服务:service crond start
  查看crontab服务是否已设置为开机启动,执行命令:ntsysv
  加入开机自动启动:
  chkconfig crond on
  1,crontab命令
  功能说明:设置计时器。
  语  法:crontab [-u ][配置文件] 或 crontab [-u ][-elr]
  补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。
  其配置文件格式如下:
  Minute Hour Day Month DayOFWeek Command
  参  数:
  -e  编辑该用户的计时器设置。
  -l  列出该用户的计时器设置。
  -r  删除该用户的计时器设置。
  -u  指定要设定计时器的用户名称。
  2,crontab 格式
  基本格式 :

  •           command
      分 时 日 月 周  命令
      第1列表示分钟1~59 每分钟用或者 /1表示
      第2列表示小时1~23(0表示0点)
      第3列表示日期1~31
      第4列 表示月份1~12
      第5列标识号星期0~6(0表示星期天)
      第6列要运行的命令
    Use the hash sign to prefix a comment
    +—————- minute (0 – 59)
    | +————- hour (0 – 23)
    | | +———- day of month (1 – 31)
    | | | +——- month (1 – 12)
    | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
    | | | | |
      * command to be executed
  3,crontab文件的一些例子:
  1 简单打印
  每天早上6点
  0 6  * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
  每两个小时
  0 /2   echo "Have a break now." >> /tmp/test.txt
  晚上11点到早上8点之间每两个小时和早上八点
  0 23-7/2,8  * echo "Have a good dream" >> /tmp/test.txt
  每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
  0 11 4 * 1-3 command line
  1月1日早上4点
  0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/
  每小时执行/etc/cron.hourly内的脚本
  01   root run-parts /etc/cron.hourly
  每天执行/etc/cron.daily内的脚本
  02 4  * root run-parts /etc/cron.daily
  每星期执行/etc/cron.weekly内的脚本
  22 4  0 root run-parts /etc/cron.weekly
  每月去执行/etc/cron.monthly内的脚本
  42 4 1  root run-parts /etc/cron.monthly
  注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。  
  每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。
  5,15,25,35,45,55 16,17,18  * command
  每周一,三,五的下午3:00系统进入维护状态,重新启动系统。
  00 15  1,3,5 shutdown -r +5
  每小时的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
  2 nginx示例
  每晚的21:30重启 nginx。
  45 4 1,10,22  /etc/init.d/nginx restart
  每月1、 10、22日的4 : 45重启nginx。
  10 1  6,0 /etc/init.d/nginx restart
  每周六、周日的1 : 10重启nginx。
  0,30 18-23  * /etc/init.d/nginx restart
  每天18 : 00至23 : 00之间每隔30分钟重启nginx。
  0 23  6 /etc/init.d/nginx restart
  每星期六的11 : 00 pm重启nginx。

  •   /1   /etc/init.d/nginx restart
      每一小时重启nginx
  • 23-7/1  * /etc/init.d/nginx restart  晚上11点到早上7点之间,每 隔一小时重启nginx
  0 11 4 * mon-wed /etc/init.d/nginx restart
  每月的4号与每周一到周三 的11点重启nginx
  0 4 1 jan * /etc/init.d/nginx restart
  一月一号的4点重启nginx
  /30   * /usr/sbin/ntpdate 210.72.145.20
  每半小时同步一下时间
  4 创建cron脚本
  第一步:写cron脚本文件,命名为crontest.cron。
  15,30,45,59   echo “xgmtest…..” >> xgmtest.txt 表示,每隔15分钟,执行打印一次命令
  第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定
  第三步:”crontab -l” 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本
  将脚本改为可执行(针对shell,.sh文件)
  chmod +x filename
  引用:
  http://blog.csdn.net/u012402276/article/details/51063269
  https://www.cnblogs.com/longjshz/p/5779215.html
  http://blog.csdn.net/edgdvcyz/article/details/53348832
  实现秒级别的定时任务
  cat /etc/redhat-release //看操作系统版本

  CentOS Linux>  一.使用延时来实现每N秒执行  原理:通过延时方法 sleep N  来实现每N秒执行。
  写个php文件
  [php] view plain copy
  $time = @date("Y-m-d H:i:s");
  echo $time;
  file_put_contents('text.txt',$time."\n",FILE_APPEND);
  打开 crontab -e 编辑定时任务 每隔10秒执行一次









          • cd /www/dingshi/;php index.php












          • sleep 10;  cd /www/dingshi/;php index.php












          • sleep 20;  cd /www/dingshi/;php index.php












          • sleep 30;  cd /www/dingshi/;php index.php












          • sleep 40;  cd /www/dingshi/;php index.php












          • sleep 50;  cd /www/dingshi/;php index.php




  注意 php是你配置的环境变量  查看  tail -f  /www/dingshi/text.txt
  遇到的坑:
  之前写的是    *  php  /www/dingshi/index.php  等不知道为什么文本里就是没内容,定时任务执行了但是没有写入, 权限,重启定时任务都试了,
  :就是没写入,但是在命令行 执行  php  /www/dingshi/index.php 可以执行无语
  后来改为了   *  cd /www/dingshi/;php index.php
  二.编写shell脚本实现  原理:在sh使用for语句实现循环指定秒数执行。
  写shell脚本执行php文件 将数据写到文本
  #!/bin/bash
  step=10 #间隔的秒数,不能大于60
  for (( i = 0; i < 60; i=(i+step) )); do
  $(php 'php  /www/dingshi/index.php')
  sleep $step
  done
  exit 0
  编辑定时    *  /www/dingshi/crontab.sh


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-828480-1-1.html 上篇帖子: CentOS 通过yum来升级php到php5.6 下篇帖子: centos限制用户只能执行指定命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表