cron-您的定时任务真的执行了吗

今日上午,生产环境怀疑某个cron定时任务没有执行,所以需要分析日志,详细过程如下,记录只为以后工作更加效率,笔者小白,请大神指点。

普及知识

cron是一种机制,crontab是指令
        它可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制

 1.取一段时间日志

语法:sed -n ‘/开始时间/,/结束时间/p‘ filename

sed -n ‘/Sep 20 08:50:*/,/Sep 20 09:50:*/p‘ /var/log/cron  >seq20_cron.log

2.过滤关键字 (也可以与上面结合一条命令搞定-这里为了步骤)

语法:grep –nr “关键字” filename

grep -nr "seq20_cron.log" > seq20.log

1.3 将过滤数据去重-统计次数-并排序

[[email protected] ~]# cat seq20.log |sort|uniq -c|sort -r
     63/****/webs/****cbeta/artisan
     62https://www.*****.cn/TimeTask/
     62https://www.*****.cn/TimeTask/
     62https://www.*****.cn/TimeTask/
     62 https://www.*****.cn/TimeTask/
     62https://www.*****.cn/TimeTask
     62https://www.*****.cn/TimeTask/
     62 https://www.*****.cn/TimeTask/
……省略若干

如果先 sort 的话,就会把所有重复的数据行变成相邻的数据行,再 uniq 的话,就去掉所有重复的数据行了。

参数介绍

-c, --count              ##在每行前加上表示相应行目出现次数的前缀编号 
-D, --all-repeated      ##只输出重复的行,不过有几行输出几行 
-i, --ignore-case       ##不区分大小写
-s, --skip-chars=N      //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符 
-u, --unique         ##去除重复的后,全部显示出来,根mysql的distinct功能上有点像  
-z, --zero-terminated   endlines with 0 byte, not newline 
-w, --check-chars=N      ##对每行第N个字符以后的内容不作对照 
--help              ##显示此帮助信息并退出  
--version              //显示版本信息并退出

1.4 筛选日志,确定任务执行结果 (时间段 当天的8点50-9点50)

将筛选出的日志文件,与原数据文件做对比,得出最后结论

结论:

1)关于 www.****.cn站点 定时任务共计:35条  8条被注销  27条在执行

2)27条中7条没有执行,但可以忽略,因为定时任务设定时间,不在范围内

0 */6 * * * /usr/bin/curl https://www.*****.cn/
0 11 * * * /usr/bin/curl 
##省略。。。

3)剩余20个定时任务,都已执行

##以上内容,也可用于普通ddos攻击,配置筛选日志,在自动建立iptables规则,自动封杀恶意访问IP

时间: 2024-10-13 12:49:52

cron-您的定时任务真的执行了吗的相关文章

PHP结合Linux的cron命令实现定时任务

PHP死循环 来处理定时任务的效率是很低的.(众多网友评价)大家都建议使用Linux内置的定时任务crontab命令来调用php脚本来实现. PHP定时任务的两种方法:1.web方式调用php网页,但是这样存在安全问题,外部用户同时也可以调用此文件. */1 * * * * /usr/bin/wget -q -O temp.txt http://wan.coolxap.cn/cron 2.用php-cli 模式来调用 php脚本,cli是以一种命令行模式来执行php脚本 * * * * * /u

crontab定时任务不执行的原因及查看任务执行情况

肯定有很多人与我一样,遇到过在本地调用脚本,能够正常执行,但写入crontab定时任务后,就会出现一部分执行,一部分不执行的问题.或者是同样的脚本,同样的定时任务,但在有些服务器上可以执行,有些却不行. 经查阅相关资料发现,crontab总是不会缺省的从用户profile文件中读取环境变量,也就是说,要么是环境变量的问题,要么就是路径的问题.解决办法如下: 1.所用命令使用绝对路径: 2.调用的脚本开头部分添加如下内容,以便读到用户的环境变量参数,解决环境变量的问题:  例:#!/bin/bas

docker(ubuntu)中安装cron运行crontab定时任务

1.安装cron apt-get install cron 设置crontab定时任务 crontab -e */1 * * * * /usr/bin/python /python/asch-check.py 编辑输入以上(表示1分钟执行一次asch-check.py脚本) 启动:service cron start 2.安装日志服务rsyslog apt-get install rsyslog 启动 service rsyslog start 编辑设置 vi /etc/rsyslog.d/50

Spring 定时任务重复执行的问题分析

背景:使用quartz时客户现场不知道为什么跑着跑着就停了,后来决定换成spring定时任务. 当使用spring定时任务时莫名奇妙的就是同一时间重复执行多次任务(通常情况下执行两次,有时候会达到3次).下面记录过程并逐一分析说明,供以后参考: 1.分析原因后发现是由ClassPathXmlApplicationContext导致 通过n多次试验发现: 当任务方法中不含任何业务逻辑时(如:只打印一些标志性的信息),任务能够正常执行,没有重复执行的现象: 当任务方法中包含业务逻辑,或应用程序执行别

记一次定时任务没有执行的原因

今天发现线上一台服务器某个定时任务没有执行,然后就纳闷了,线上服务器环境全部是用ansible统一部署的,其他服务器的定时任务都没有问题,然后就再想是否是这台服务器的crontab有问题了,于是在定时任务中编写如下所示: */1 * * * * sh **.sh >/tmp/out.log 2>&1 过了一分钟后cd /tmp查看日志,我的哥,显示脚本找不到的错误,然后仔细看了下,脚本名有问题,真是蛋疼,在此警示自己工作中一定要仔细再仔细,不容再犯如此低级的错误.

预发环境与生产环境共享数据库时定时任务重复执行问题解决

背景: 为保证预发环境的真实性,预发与生产环境往往共享数据库,在定时任务列表中,预发与生产环境都会从任务列表中获取定时任务,然后执行,这会导致定时任务会执行重复. 解决方法: 在job中增加一个环境变量字段,如test,stg,prod等,当创建任务的时候获取执行创建任务服务器的profile,根据profile插入到jod的上述字段中.定时任务执行时判断任务是否符合执行机器的profile,符合则执行,不符合则不执行. 具体可执行操作: 1.在tomcat或者启动脚本中加入vm参数,例如 -D

Linux定时任务没有执行的总结

昨天晚上让运维帮我更新上线了一个shell脚本,并添加到定时任务中准备凌晨12点06分执行,当我早上5点17醒来的时候,总感觉不对就去查邮件看看定时任务是否执行了,一看没有执行,然后直接远程到服务器,发现脚本执行只用了6秒,说明脚本是被调用了,那么就直接排除了缺少执行权限的问题,那到底是什么问题呢?随后又手动执行了一次,发现报错说脚本中有回车换行符,奇怪了,突然明白是windows和linux的编码格式不一样,马上用dos2unix对文件进行了转码,再执行,一切正常了,这点值得注意! 现在总结一

集群环境下如何防止定时任务重复执行?

起因 最近做项目是遇到这样一个问题:系统需要在每天的16:00向一些符合特定条件的用户发送一份邮件,发送成功后修改掉数据库中对应数据的标志位.本来是没有问题的,但后来系统被部署到了集群环境下,导致每天会向这些用户发送多次同样的数据,遭到了客户的抱怨. 解决 下面来介绍一下处理这种问题的解决办法: 1.在数据库中建立tm_job_group表 Name Type Comments group_id number 组id interval number 时间间隔区分定时任务的间隔即多长时间内不可重复

如何利用Cron让django应用定期执行

最近用Django写了一个项目,但是有一个地方需要应用在后台自动定期执行检查,并存入数据库,如果单纯的写Python程序的话不能很好的跟django的结合在一起,写起来也和麻烦,查找资料的时候发现了django有一个功能,就是django command,通过这个就可以使用django的manage.py去执行命令了. 参考:资料1   资料2   资料3 实现思路: 1.首先把需要自动执行的django method写成django command 2.将自己定义的django command