事发原因:我写了一个定时脚本,脚本里面有涉及到if判断,然后我在自己的服务器上面不论是crontab -e写定时脚本跑任务(在定时任务里面sh a.sh),还是自己直接sh a.sh,都是非常正常的,但是放到测试服务器上面,直接sh a.sh日志能够正常打印到log里面,
但是通过crontab -e定时任务里面的脚本,日志打印的是
没有具体的数值,这个就很奇怪,定时脚本里面也是sh 这个a.sh,为什么直接sh就可以,crontab定时任务sh这个脚本就不可以呢?
查看crontab的日志:
我的日志在上图在第三个里面:
crontab日志报错了:
第一行看到说mysql command not found,下面的那个[:too many arguments能想到是if那块的异常,先看第一行,我去,明显就是MySQL的问题,但是直接sh都是正常的,crontab -e设定时任务sh就报错,百度了一下:
系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
3.1、首先得知道mysql命令或mysqladmin命令的完整路径
比如mysql的路径是:
/usr/local/mysql/bin/mysql,我们则可以这样执行命令:
ln -s /usr/local/mysql/bin/mysql /usr/bin
总结来说:MySQL的安装问题,如果MySQL是正常安装的是没有问题的.就怕rpm包安装,虽然简单,但是后续会有问题,而且rmp包需要单独安装MySQL的client