crontab执行时间与系统时间不一致问题分析

7 篇文章 0 订阅
4 篇文章 0 订阅

导致crontab无法安装系统时间执行的原因注意是时区问题,但是时区改动一定要重启crond,否则不会生效!

注意事项: 

1、系统时区不一致导致

2、时区改动后没有重启crond

如下为一次线上事故的发现与分析及解决过程:

#查看定时任务并未按照预期时间执行

[root@itso123 logs]# tail -15 abc.log 
2018-08-20 06:54:01 在线数: 
2018-08-20 06:56:01 在线数: 
2018-08-20 06:58:02 在线数: 
2018-08-20 07:09:01 在线数: 
2018-08-20 07:19:01 在线数:
2018-08-20 07:29:01 在线数: 
2018-08-20 07:39:01 在线数: 
2018-08-20 07:49:01 在线数: 
2018-08-20 07:59:01 在线数:
2018-08-20 08:59:01 在线数: 
2018-08-20 09:59:01 在线数: 
2018-08-20 10:59:01 在线数: 
2018-08-20 11:59:02 在线数: 
2018-08-20 12:59:01 在线数: 
2018-08-20 13:59:01 在线数: 

#当前系统时间与时区

[root@itso123 logs]# date
2018年 08月 20日 星期一 14:01:26 CST

#crontab配置来看,当前时间应该是每2分钟执行一次,可是日志显示却是1小时执行

8-22点:每2分钟执行

7-8和23点:每10分钟执行一次

0-6点:每1 小时执行一次

[root@itso123 logs]# 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
#system log monitor
*/2 8-22 * * * root /usr/bin/python /home/abc.py >>/data/logs/abc.log
9,19,29,39,49,59 7-8,23 * * * root /usr/bin/python /home/abc.py >>/data/logs/abc.log
59 0-6 * * * root /usr/bin/python /home/abc.py >>/data/logs/abc.log

#时区配置一致(难得是没有重启crond服务导致?)

[root@itso123 logs]# more /etc/localtime 
TZif2
CST-8
[root@itso123 logs]# cat /usr/share/zoneinfo/Asia/Shanghai
TZif2�\���'p�����Z��6ip ~h�!Iap"^J�#)Cp$Gg%_�&'I&�A�(+(�#�~�p�CDTCSTTZif2
                                                                                              ����~6C)�����\�������'p�������������Z��6ip ~h�!Iap"^J�#)Cp$Gg%_�&'I&�A�(+(�#�q�~�pLMTCDTCST
CST-8

#时区配置晚于crond启动时间(果然是配置改动后未重启!)

[root@itso123 logs]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 8月   2 19:51 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
[root@itso123 logs]# ps -ef|grep cron
root      5004     1  0 7月26 ?       00:00:08 /usr/sbin/crond -n
root     21253  8440  0 14:07 pts/1    00:00:00 grep --color=auto cron

#重启crond服务

[root@itso123 logs]# service crond restart
Redirecting to /bin/systemctl restart crond.service
[root@itso123 logs]# ps -ef|grep cron
root     21524     1  6 14:08 ?        00:00:00 /usr/sbin/crond -n
root     21544  8440  0 14:08 pts/1    00:00:00 grep --color=auto cron

#crontab已经生效为每2分钟执行

[root@itso123 logs]# tail -f monitor.log 
2018-08-20 14:10:02 在线数: 
2018-08-20 14:12:01 在线数: 
2018-08-20 14:14:01 在线数: 


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
crontab执行时间可以通过在crontab命令中指定时间参数来计算。时间参数由五个字段组成,分别表示分钟、小时、日、月和星期。每个字段都有特定的取值范围。 例如,如果我们有一个crontab命令如下: */2 * * * * /usr/bin/sh /root/export/servers/jiaoben/ljf.sh >> /root/export/servers/jiaoben/test.out 这个命令表示每隔2分钟执行一次脚本`/usr/bin/sh /root/export/servers/jiaoben/ljf.sh`,并将输出追加到`/root/export/servers/jiaoben/test.out`文件中。其中,`*/2`表示每隔2分钟执行一次。 另外,还可以使用其他的时间参数来指定执行时间。比如: - `0-59/5`表示每隔5分钟执行一次,范围是0到59分钟。 - `0-23/2`表示每隔2小时执行一次,范围是0到23小时。 - `200-23/2`表示每隔2小时执行一次,范围是20到23小时。 通过这些时间参数的组合,可以实现不同的定时任务。 #### 引用[.reference_title] - *1* *3* [linux 服务器中设置crontab 定时任务&计算时间差值](https://blog.csdn.net/u011066470/article/details/128565605)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [crontab定时时间计算方法](https://blog.csdn.net/mashengwang/article/details/1516963)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值