关于crontab的坑 - chris-wangkk/myWiki GitHub Wiki
坑1:
crontab 的执行环境通常只包含一些基本的系统环境变量,如 PATH、HOME 和 SHELL。其他自定义环境变量(如用户自定义的环境变量)可能不会自动加载。为了确保脚本能够正常运行,可以在 crontab 中显式设置所需的环境变量。
eg:
运行脚本中执行了一个py,添加到crontab后运行发现py没执行(而手动执行脚本是正常的)
分析发现,py中包含一段读取文件的逻辑,该文件中包含了中文(测试发现无中文时,crontab运行脚本可正常执行py),判断应该因为乱码原因出错了
在脚本中手动设置环境变量 LANG(先执行 echo $LANG 得到)
export LANG=zh_CN.UTF-8
坑2:
crontab 作业以特定用户的身份运行,具有该用户的权限。因此,需要确保脚本和要访问的文件具有适当的权限,以便 crontab 作业可以正常执行。
eg:
运行脚本中包含如下命令(其中 $jcepath 所属用户为user00 service)
jcepath=‘/data/qqmusicjce’
cd $jcepath
/usr/local/git/bin/git pull
添加到crontab后运行,而后以user00身份手动运行 git pull 时发现报错:权限不足
需以指定用户身份来运行命令(具有该用户的权限)
sudo -u user00/usr/local/git/bin/git pull