最近遇到了一个问题就是在终端中手动运行shell脚本成功但是在crontab中就会运行失败,检查之后,发现有两个主要原因
1.环境变量设置不对,cron默认使用的环境变量是PATH=/usr/bin:/bin
2.使用的shell不一样,cron默认使用的shell是/bin/sh
解决方法如下:
首先在命令行里敲
echo $PATH
然后把输出的内容加到你的shell脚本中:
export PATH="你之前输出的内容"
之后使用以下命令查看你的默认终端shell
cat /etc/passwd
比如,你当前的用户是ubuntu输出以下内容:
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
可以看到最后一列是/bin/bash
那么你就在自己脚本的开头加上:
#!bin/bash
之后应该就没问题了。