我使用crontab -e添加以下内容:
36 * * * * /root/Backup/backup.sh
但它不起作用!
我在syslog中找到了它,但它实际上没有运行:
Oct 6 15:36:01 ubuntu CRON[7685]: (root) CMD (/root/Backup/backup.sh)
如果我直接运行它,我确定我的脚本可以正常运行。
#
# define a function to create directory
#
fnCreateFolder()
{
if [ ! -d $1 ]; then
mkdir $1
echo "New directory, '$1', is created"
fi
}
############################################################################
#
# Full pathname to binaries to avoid problems with aliases and builtins etc.
#
DATECMD="/bin/date"
RMCMD="/bin/rm"
subdir=`${DATECMD} +%Y-%m-%d`
if [ ! -d "$subdir" ]; then
fnCreateFolder "$subdir"
fi
############################################################################
subdir=`${DATECMD} +%Y-%m-%d`
fnCreateFolder "$subdir"
datetime=`${DATECMD} +%Y-%m-%d_%Hh%Mm%Ss_%p`
echo "date-time: $datetime"
backupname="Backup@$datetime.sql"
# backup DB
mysqldump -u'sun' -p'sun2010fyp' smartward > $backupname
echo "start tar cvzf Backup($datetime).tar.gz $backupname"
# zip the backup file
tar cvzf "Backup($datetime).tar.gz" "$backupname"
echo "finished zip $backupname as Backup($datetime).tar.gz"
# move tar file to dest folder
echo "& move it to the destination directory"
mv "Backup($datetime).tar.gz" "$subdir"
# & remove the backup file after zipping it
${RMCMD} -f "$backupname"
echo "finally removed $backupname"
#DONE
答案 0 :(得分:3)
你遗失的两件事:
或者,您可以将crontab条目更改为以下内容: 36 * * * * / bin / sh /root/Backup/backup.sh
的信息: 您可以直接从/ bin / sh调用脚本,或者需要向shell(cron的环境)提供足够的信息以使用正确的解释器执行脚本。这是由第1项处理的。此外,由于您尝试直接执行脚本,因此它必须是可执行的。
答案 1 :(得分:1)
尝试将stdout和stderr传输到文件中。例如。 /..../backup.sh> / tmp / backup-output 2>& 1并检查。还要检查cron运行它和在命令行上运行它之间是否存在环境问题。将env放在文件的开头。
您还确定Backup应以大写字母开头吗?
答案 2 :(得分:0)
谢谢大家 问题已经解决了 我在shell脚本中使用绝对路径而不是相对路径。