记crontab脚本未执行问题排查
问题描述
昨晚某个用python写的监控脚本上线,运维小伙伴电话告知手动执行结果正常,但用crontab无论如何也调不起来,脚本自己打的log也杳无音讯。
检查
- 首先就要看看crontab是怎么写的:
*/5 * * * * source /etc/profile; python /path/to/the/script.py >> /dev/null 2>&1
- 然后看看脚本是怎么写的(此处省略几百行,关注点如下):
logging.warning('some error message sending to syslog server')
os.system('echo "other local log" >> /path/to/**old**/script.log')
思路
- 上面这是什么鬼,本地log echo到绝对路径,而且路径居然还没改?
- 告知小伙伴先别忙着改脚本,关注一下那个old/srcipt.log。然后得知log没有输出。
- Cron在执行脚本的时候,会把输出通过邮件发送给crontab的所有者,或者MAILTO环境变量指定的邮箱。但是此处居然很自信地将 stdout, stderr 都重定向到了/dev/null,邮件自然空空如也。
- 修改重定向到/tmp/script.log,观察到输出:
File "script.py", line 50finally:^ SyntaxError: invalid syntax
这又是哪跟哪?翻出来瞧瞧:
try: f = open('file', 'r') except IOError, e: print >> sys.stderr, e else: somelist = f.readlines() finally: f.close()
对着这段代码看了足足5分钟……
有毛病吗?没毛病啊?是我眼睛有毛病了?既然是finally这有语法错误,那就滚回去翻翻文档吧。还好我有服务器上Python 2.5对应的老文档。
Changed in version 2.5: In previous versions of Python, try...except...finally did not work. try...except had to be nested in try...finally.
Python 2.5 开始支持except跟finally同级,之前版本except要嵌套在try...finally里面。如此说来,难道是版本问题?
# python --version python 2.5.x # which python /usr/local/bin/python
记得服务器是RHEL 5.8,元配python 2.4.3,那么就是crontab默默地调用了/usr/bin/python
- 把crontab改成:
*/5 * * * * source /etc/profile; /usr/local/bin/python /path/to/the/script.py >> /dev/null 2>&1
脚本调起来了。
附
问题解决了,但还是没想明白 source /etc/profile 后为何会去用python2.4,待查。
转载于:https://www.cnblogs.com/qingheng/p/cron-not-execute.html
记crontab脚本未执行问题排查相关推荐
- centos7 crontab未执行问题排查
问题:设置了定时任务,发现任务未执行 [root@master ~]# crontab -l 18 11 * * * echo aaa > /tmp/test 2>&1 59 5 ...
- C#执行osql脚本时部分脚本未执行
1.使用C#调用OSql执行sql脚本时发现有脚本中某些sql语句没有执行. 2.脚本中有很多go语句.这些go语句会导致部分脚本无法执行. 3.但是脚本中也会发生缺少go语句导致的错误,当后面的sq ...
- CentOS crontab定时任务不执行的解决
crontab 配置文件 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # .- minute (0 59 ...
- linux使用flock文件锁解决脚本周期内未执行完重复执行
linux使用flock文件锁解决脚本周期内未执行完重复执行 关于flock flock 是对于整个文件的建议性锁.也就是说,如果一个进程在一个文件(inode)上放了锁,那么其它进程是可以知道的.( ...
- 运维经验分享(六)-- 深究crontab不能正确执行Shell脚本的问题(二)
运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell ...
- 对未标记为可安全执行的脚本_三、??XSS跨站脚本攻击
跨站脚本攻击(Cross Site Scripting),缩写为XSS.恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意 ...
- 运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行脚本的问题
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1676490 运维 ...
- 对未标记为可安全执行的脚本_Script Debugger for Mac(脚本调试软件)
你是否需要一款可以轻松编译AppleScript的工具吗?来试试Script Debugger for Mac吧!Script Debugger Mac版是一款运行在mac平台的调试软件.Script ...
- linux怎么查看定时任务有没有运行,怎么看crontab定时任务是否执行
定时执行操作命令,每一个用户拥有自己的crontab,那么大家知道怎么看crontab定时任务是否执行呢?接下来大家跟着学习啦小编一起来了解一下的看crontab定时任务是否执行解决方法吧. 看cro ...
最新文章
- TP框架中field查询字段
- jquery 读秒,倒数计时方案
- C# DateTimePicker控件如何精确设置显示时分秒
- [HDOJ3998] Sequence(DP,最大流)
- 【HDU - 1540】 Tunnel Warfare (线段树进阶操作 区间合并+ 单点更新+ 最长覆盖区间查询 )
- 数据结构:排序算法之交换排序(冒泡排序、快速排序)
- 在淘宝,我们是这样衡量代码质量的
- 【OpenCV 例程200篇】25. 图像的平移
- 让我的网站变成响应式的3个简单步骤
- 免费作图软件draw.io 软件输入数学公式和文本
- 华三服务器升级文档,H3C交换机升级步骤
- word怎么只删除英语保留汉语或删除汉语保留英文
- 压力测试工具Apache Bench:2:基于Alpine的Apache Bench镜像
- 生成树协议STP 网络冗余技术
- 计算机网络中数据包的分布,计算机网络习题
- 成功解决百度网盘下载文件时遇到 下载总进度一直处于99.9%,显示一直下载不下来的问题
- 解决关于win10下eclipse代码格式化不生效问题
- 华为(HUAWEI)TE10一体化高清视频会议终端系统维护之指示灯状态
- DPLL 算法(求解k-SAT问题)详解(C++实现)
- 请回答2020 | 智行中国,用脚步记录这个时代的智变故事