因为crontab执行的时候环境变量,跟你在命令行执行的环境变量不同,所以才会失败。
如果你是root用户就用这个:
30 4 * * * su - root -c “/root/weblog.sh”
如果你是非root用户就用:
30 4 * * * . /etc/profile;/bin/sh root/weblog.sh
你试一下echo你的命令到一个文本里,看看脚本是否执行,还是命令有错误
看看系统里bzip2在什么位置,比如在/usr/bin
替换bzip2 -9 *.log为
cd /data/${y}/${m}/${d}
/usr/bin/bzip2 -9 *.log
试试吧。