写了一个shell脚本,在终端测试可以正常运行,但是加入到crontab任务里却无法执行。在网上找了一下解决方法,大都是说因为环境问题,可是操作一通后发现并不能解决我的问题。很奇怪:其他shell脚本可以在crontab里执行,我的shell脚本可以在终端中执行,但就是不能让我的shell在crontab里执行。
原因
最后通过排查发现,我在编写crontab文件命令时,传入了一个日期参数$(date +%Y%m%d)
,但是 %
在crontab文件里是个特殊符号,相当于回车,因此命令不能正常执行。
解决
在%
前加上反斜杠\
,进行转义就可以了
其实问题很简单,但是因为对crontab不熟悉导致花费了很多时间排查。总之crontab命令里如果出现了%
,就应该做相应的转义处理。