shell 中 mysqldump: command not found
原因:命令行执行脚本和定时任务中执行脚本环境变量不一样。
找了三篇相关文章,前两篇可行,第三篇未测试。
一、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
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。