问题描述:
Shell脚本手动执行可以正常运行,并得到正确结果;使用Crontab定时调度的时候,Shell脚本执行出来的结果数据量为0。
原因:
Linux下用crontab执行定时任务不会缺省的从用户profile文件中读取环境变量参数,所以经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错。这是因为用户登陆Linux操作系统的时候,”/etc/profile”, “~/.bash_profile”等配置文件会被自动执行,而crontab定时调度的时候可能不会执行配置文件。
解决方案:
Shell脚本缺省的 #!/bin/sh 开头换行后的第一行添加:
#!/bin/sh
source /etc/profile
source ~/.bash_profile
..自己的运行脚本代码...
这时候还是不好使,修改定时任务填写方式,手动切换到脚本路径之后再执行脚本
31 18 * * * cd /usr/my/sh && /bin/sh blog_backup.sh