问题描述:

      Shell脚本手动执行可以正常运行,并得到正确结果;使用Crontab定时调度的时候,Shell脚本执行出来的结果数据量为0。

    原因:

    Linux下用crontab执行定时任务不会缺省的从用户profile文件中读取环境变量参数,所以经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错。这是因为用户登陆Linux操作系统的时候,”/etc/profile”, “~/.bash_profile”等配置文件会被自动执行,而crontab定时调度的时候可能不会执行配置文件。

    解决方案:

    Shell脚本缺省的 #!/bin/sh 开头换行后的第一行添加:

    1. #!/bin/sh
    2. source /etc/profile
    3. source ~/.bash_profile
    4. ..自己的运行脚本代码...

    这时候还是不好使,修改定时任务填写方式,手动切换到脚本路径之后再执行脚本

    31 18 * * * cd /usr/my/sh && /bin/sh  blog_backup.sh