CRON任务的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CRON任务的坑相关的知识,希望对你有一定的参考价值。

命令not found问题

有一个备份脚本需要定时去执行,写入到cron中,发现没有备份数据,直接执行脚本没有问题,加上日志,发现mysql命令 not found

但是echo $PATH,mysql的路径在里面

​​[root@master tmp]#echo $PATH  ​​
​​/root/program/emqx/bin:/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/redis/bin:/root/bin​​

那就有一种推断了

定时任务中sh读取的启动文件和手动执行sh读取启动文件不一样,导致PATH的值不一样,没有mysql的路径

验证以下

vim /tmp/test.sh

#!/bin/sh
echo $PATH

加入定时任务中,查看输入为,验证了上边的猜想

/usr/bin:/bin

解决方法:

  1. 脚本中修改PATH环境变量(推荐这种,只需要可见你需要的命令)
PATH=$PATH:/usr/local/mysql/bin
export PATH
  1. 脚本中运行下/etc/profile
. /etc/profile

以上是关于CRON任务的坑的主要内容,如果未能解决你的问题,请参考以下文章

Linux crontab下关于使用date命令和sudo命令的坑

gin结合cron,实现定时任务

Spring 定时任务 cron 表达式

linux下的cron定时任务知识梳理

Spring 定时任务 @Scheduled cron表达式

创建周期性计划任务cron