原因:命令行执行脚本和定时任务中执行脚本环境变量不一样。

找了三篇相关文章,前两篇可行,第三篇未测试。

一、crontab定时执行脚本与手动执行脚本结果不一致

原文:https://blog.csdn.net/wgaqg/article/details/9031975

脚本开始加上这句。原因是命令行执行脚本会自动执行下方的命令,而脚本定时执行不会执行。

source ~/.bash_profile

~/.bash_profile是用户环境变量的配置文件。

当然,你需要执行的命令的环境变量在这个用户环境变量里才有用。

很多情况下环境变量在系统环境变量里,所以:

source /etc/profile

关于环境变量:http://www.gmloc.me/156.html

二、crontab与bash环境变量不一致导致的无法定时执行任务

方法:命令使用绝对路径。个人喜欢使用此方法。

查找命令位置:

which xxx

原文:https://blog.csdn.net/QQ276592716/article/details/7497978

三、shell 中 mysql: command not found 看完这篇就解决了

原文:https://blog.csdn.net/MrFDd/article/details/126281905

解决办法有三种:

1、在shell 脚本中添加环境变量

export PATH=/usr/local/mysql/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

2、在 /etc/profile 添加

export PATH=/usr/local/mysql/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

然后:source /etc/profile

3、建立一个软连接

mysql命令的路径在/usr/local/mysql/bin下面

ln -s /usr/local/mysql/bin/mysql /usr/bin
文章目录