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

总结

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

相关文章

  • shell脚本报错:

    shell脚本报错:"[: =: unary operator expected"解决办法

    这篇文章主要介绍了shell脚本报错:"[: =: unary operator expected"解决办法的相关资料,需要的朋友可以参考下
    2017-03-03
  • 关于crontab定时任务命令解读

    关于crontab定时任务命令解读

    这篇文章主要介绍了关于crontab定时任务命令的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 我常用的一些linux命令小结

    我常用的一些linux命令小结

    linux命令熟练掌握后对效率提升有多大,这篇文章主要介绍了我常用的一些linux命令小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 在 Ubuntu Linux 上安装 Oracle Java 14的方法

    在 Ubuntu Linux 上安装 Oracle Java 14的方法

    最近,Oracle 宣布 Java 14(或 Oracle JDK 14)公开可用。如果你想进行最新的实验或者开发的话,那么你可以试试在 Linux 系统上安装 Java 14,感兴趣的朋友可以参考下本文
    2020-04-04
  • Linux初学(CnetOS7 Linux)之切换命令模式和图形模式的方法

    Linux初学(CnetOS7 Linux)之切换命令模式和图形模式的方法

    本篇文章主要介绍了Linux初学(CnetOS Linux7)之切换命令模式和图形模式的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 在 awk 中使用循环

    在 awk 中使用循环

    awk 脚本有三个主要部分:BEGIN 和 END 函数(都可选),用户自己写的每次要执行的函数。这篇文章主要介绍了在 awk 中怎么使用循环,需要的朋友可以参考下
    2019-12-12
  • linux 入侵常用命令汇编

    linux 入侵常用命令汇编

    掌握这些命令也有助于配置linux的安全,大家可以看看。
    2009-07-07
  • linux指令man page之rm,mv详解

    linux指令man page之rm,mv详解

    这篇文章主要介绍了linux指令man page之rm,mv详解的相关资料,需要的朋友可以参考下
    2017-02-02
  • 关于linux分区,文件系统,目录结构的概述

    关于linux分区,文件系统,目录结构的概述

    下面小编就为大家带来一篇关于linux分区,文件系统,目录结构的概述。小编觉得挺不错的。现在就分享给大家。也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • linux命令如何查看jvm堆内存信息

    linux命令如何查看jvm堆内存信息

    这篇文章主要介绍了linux命令如何查看jvm堆内存信息方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07

最新评论