[图片] 利用 $?逐行语句调试,查看返回值是否 0,非零为报错。 最后定位,某些语句没有正确执行,比如 etcdctl 和 MySQL。 经过查询资料发现,虽然在同一个用户下手动执行 shell 和用 crontab 执行 shell 脚本,但是这两种运行方式的环境变量是不一样的。 crontab 的环境变量单独维护 ..

排查 crontab 执行 shell 脚本异常

利用 $?逐行语句调试,查看返回值是否 0,非零为报错。

最后定位,某些语句没有正确执行,比如 etcdctl 和 MySQL。

经过查询资料发现,虽然在同一个用户下手动执行 shell 和用 crontab 执行 shell 脚本,但是这两种运行方式的环境变量是不一样的。

crontab 的环境变量单独维护在**/etc/crontab**

image.png

最后把一些第三方命令使用绝对路径的方式运行,运行成功

image.png

脚本在Shell可以执行成功,放到crontab里执行失败 - williamzheng - 博客园

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    675 引用 • 860 回帖 • 645 关注
回帖
请输入回帖内容...