1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux Crontab定时执行脚本出错 但手动执行脚本正常原因及解决方案

Linux Crontab定时执行脚本出错 但手动执行脚本正常原因及解决方案

时间:2019-10-01 21:27:36

相关推荐

Linux Crontab定时执行脚本出错 但手动执行脚本正常原因及解决方案

Linux Crontab定时执行脚本出错,但手动执行脚本正常原因及解决方案

实际开发场景

需要开发一个Flink监控程序,初步使用shell脚本进行监控,如果发现失败了,则自动重新运行Flink命令行参数进行重启。

遇到的问题

编写好shell脚本后,在linux命令行调用 sh shell.sh进行测试,成功实现监控和重启功能。于是利用crontab对脚本进行定时调度监控。

后来发现,当Flink失败时确实发出了监控报警,但是却没有自动重启。经排查后发现,应该是脚本中Flink命令行启动Flink任务没有成功,但是在Linux控制台中测试又没问题,这是什么原因呢?

查找资料之后发现,crontab有一个坏毛病,就是它总是不会缺省的从用户profile文件中读取环境变量参数,经常导致在手工执行某个 脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错。

错误原因

所以原因就在于,crontab没有去读环境变量,需要再脚本中手动引入环境变量

恍然大悟,于是尝试在脚本中加入了引入环境变量的配置:

#!bin/bashsource /etc/profilesource ~/.bash_profile...

再执行时,问题解决。

原来就是因为crontab在执行脚本时没有读取环境变量,导致执行Flink命令行出错

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。