我有以下脚本,用于根据 MD5 比较更新文件,该脚本在命令行中运行良好,但当我将其放入 cron 中时,没有任何反应。我的系统上只有 root 用户,脚本归 root 所有,我在 crontab 中像这样调用该脚本:/bin/bash /home/papa/systems/sron.sh
这是我的脚本,我已经尝试了迄今为止读过的所有解决方案,但没有进展,请帮忙。
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
MD5FILE=/tmp/.md5oldjar
MD5FILENEW=/tmp/.md5newjar
FILE_TO_CHECK=/tmp/rose.jar
URL=http://xxxx
DESTINATION=/tmp
rm -rf $FILE_TO_CHECK
wget $URL -P $DESTINATION
#echo generating MD5 for $FILE_TO_CHECK
echo `md5sum $FILE_TO_CHECK` > $MD5FILENEW
MD5PRINT=`cat $MD5FILENEW`
if [ -z "$MD5PRINT" ]; then
echo "ERROR Recived an empty MD5PRINT thats not valid, aborting"
exit 1
fi
OLDMD5PRINT=`cat $MD5FILE`
if [ -z "$OLDMD5PRINT" ]; then
echo "Got an empty string from the oldfile, aborting"
echo $OLDMD5PRINT
exit 1
fi
if [ "$OLDMD5PRINT" != "$MD5PRINT" ]; then
echo "File has changed"
echo "updating MD5 file...."
echo $MD5PRINT > $MD5FILE
echo "file content:"
cat $MD5FILE
echo `date` >> /home/log
echo done
else
echo nothing >> /home/log
fi
答案1
尝试>/home/papa/systems/sron.log 2>&1
在 crontab 中添加行尾并查看日志以了解发生了什么。最可能的原因是脚本根本没有运行,例如由于 lain 的回答中指出的错误
答案2
这在 CentOS 系统上工作正常,我必须从用户 crontab(crontab -e)中手动执行。您将其放在 root 的 crontab 中还是放在 /etc/crontab(或类似文件)中?如果这样做,则需要将您的 crontab 指定为
*/1 * * * * root /bin/bash /home/papa/systems/sron.sh