记一次Linux计划任务cron无结果的排查过程

Posted by admin on 2020年7月10日 10:27

前言

上篇文章中实现的端口扫描方案,在机器上跑时发下计划任务没有执行结果,也未收到监控告警。但是通过直接命令行模式是的确可以的,遂排查下问题到底出在了哪里。

问题确认

首先,文件是肯定存在的,但是的确是没有扫描结果,所以也无法收到监控告警。

查看计划任务日志,看是否执行了计划任务。

的确是执行了,但是为啥没结果呢?告警是依赖扫描结果告警的,所以还是扫描没结果的原因。

排查分析

之前做的DNSlog监控是没问题的,通过与ceye_moitor.py文件对比发现,端口扫描脚本没有执行权限,添加执行权限

chmod 755 ./port*

再次执行计划任务发现还是没有结果。

通过搜索发现可以利用mail日志排查,打开mail日志发现一堆错误。

通过搜索,了解是需要配置的,修改下配置。

inet_interfaces = localhost修改为inet_interfaces = all 即可。

重启服务

service postfix start

再次执行计划任务,查看mail日志。

终于找到原因了,计划任务执行时不识别脚本中的相对路径!

好的吧~ 修改所有脚本为绝对路径。

修改完毕,再次运行,正常告警。问题解决~

问题总结

  1. crontab服务未正常运行(查看/var/log/cron/var/log/messages日志 );
  2. 脚本权限问题(查看脚本是否有执行权限);
  3. 环境变量问题( 手动设置PATH );
  4. 路径问题( 使用绝对路径 );

参考资料

https://blog.csdn.net/ltstud/article/details/78052342

https://www.ctolib.com/topics-83317.html