Linux crontab定时任务执行失败处理方案

 更新时间:2024年06月18日 14:51:03   作者:溯游从之~  
这篇文章主要介绍了Linux crontab定时任务执行失败处理方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

背景

写了个postman脚本,准备放在服务器每隔5分钟执行一次,postman命令在/usr/local/bin/postman目录

现象

cron脚本

  • 1.crontab系统配置
[root@node2 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
  • 2.crontab定时任务
*/5 * * * * /mnt/script/postman/b.sh
  • 3./mnt/script/postman/b.sh
#!/bin/sh
postman collection run /mnt/script/postman/blade-1.json >> /tmp/cron_test.log

执行结果

/tmp/cron_test.log中没有执行记录,脚本中的接口也没触发

分析过程

检查cront服务是否正常运行

service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2023-06-25 17:01:35 CST; 44min ago
 Main PID: 75796 (crond)
    Tasks: 1
   Memory: 664.0K
   CGroup: /system.slice/crond.service
           └─75796 /usr/sbin/crond -n

Jun 25 17:25:01 node2 crond[75796]: sendmail: fatal: parameter inet_interfaces: no local interface found for ::1

服务正常

检查定时任务是否正常触发

  • 查看定时任务日志tail -100f /var/log/cron
Jun 25 17:49:01 node2 CROND[90291]: (root) CMD (/mnt/script/postman/b.sh)

可以看到任务已经被触发了

检查触发的任务是否正常运行

  • 添加定时任务
* * * * * date >> /tmp/cron_test.log
  • 在/tmp/cron_test.log中有出现执行结果,说明定时任务可以正常触发和执行
Sun Jun 25 17:52:01 CST 2023

检查定时任务环境

因为postman是单独安装的,cli在/usr/local/bin目录下,想看一下cron执行的时候环境变量是什么

  • 修改/mnt/script/postman/b.sh
echo $PATH >> /tmp/cron_test.log
postman collection run /mnt/script/postman/blade-1.json >> /tmp/cron_test.log
  • cron执行后发现/tmp/cron_test.log中的PATH不对。。。。
Sun Jun 25 17:34:01 CST 2023
/usr/bin:/bin

至此问题原因找到了,是因为cron执行环境中没有postman命令,只要触发一下环境配置或者指定postman的路径即可

修改方案

方案一 :添加环境变量

  • 修改/mnt/script/postman/b.sh脚本
#!/bin/sh

. /etc/profile #环境变量生效 前提是你的命令所在环境有在这个文件中配置
echo $PATH >> /tmp/cron_test.log
postman collection run /mnt/script/postman/blade-1.json >> /tmp/cron_test.log

方案二:直接指定命令目录

  • 修改/mnt/script/postman/b.sh脚本
#!/bin/sh
/usr/local/bin/postman collection run /mnt/dengwei/postman/blade-1.json >> /tmp/cron_test.log

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Ubuntu下安装Chrome的方法分享

    Ubuntu下安装Chrome的方法分享

    本文给大家分享的是Ubuntu下安装Chrome的方法,安装的过程中发现还是挺麻烦的,就记录下来推荐给大家,有需要的小伙伴可以参考下。
    2015-04-04
  • Apache配置SSLCARevocationCheck吊销检查的实现

    Apache配置SSLCARevocationCheck吊销检查的实现

    Apache的SSLCARevocationCheck指令用于启用客户端证书吊销状态检查,配置包括CRL和OCSP模式,三种检查模式,建议生产环境采用CRL本地缓存和OCSP实时校验的双保险策略,配合自动化更新脚本,取得安全与可用性之间的平衡
    2026-04-04
  • linux中crw brw lrw等等文件属性是什么

    linux中crw brw lrw等等文件属性是什么

    这篇文章主要介绍了linux中crw brw lrw等等文件属性是什么 的相关资料,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-09-09
  • 函数sync、fsync与fdatasync的总结整理(必看篇)

    函数sync、fsync与fdatasync的总结整理(必看篇)

    下面小编就为大家带来一篇函数sync、fsync与fdatasync的总结整理(必看篇)。小编觉得挺不错的。现在就分享给大家。也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Linux启动Java程序jar包Shell脚本方式

    Linux启动Java程序jar包Shell脚本方式

    文章介绍了如何创建一个Shell脚本来简化在Linux环境中启动Java程序jar包的过程,该脚本可以检查jar包的状态、启动、停止和重启项目,只需修改脚本中的变量并将其与jar包放在同一目录下,即可方便地使用该脚本
    2024-12-12
  • Linux下设置Vim编辑器里Tab的长度行号

    Linux下设置Vim编辑器里Tab的长度行号

    这篇文章主要介绍了Linux下设置Vim编辑器里Tab的长度行号 ,需要的朋友可以参考下
    2018-06-06
  • linux中的静态IP配置方式

    linux中的静态IP配置方式

    这篇文章主要介绍了linux中的静态IP配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Linux alias的三种使用场景方式

    Linux alias的三种使用场景方式

    文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效,系统级别别名对所有用户生效,文章还提供了创建、修改、删除别名的方法
    2025-01-01
  • 解读Linux下ip命令展示的网络连接信息

    解读Linux下ip命令展示的网络连接信息

    这篇文章主要给大家介绍了关于Linux下解读ip命令展示的网络连接信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧。
    2018-03-03
  • Linux系统扩容根目录磁盘空间的操作方法

    Linux系统扩容根目录磁盘空间的操作方法

    这篇文章主要介绍了Linux系统扩容根目录磁盘空间的操作方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07

最新评论