Fedora Cron Job需要帮助

我需要一些build议,因为我被我的Fedora 8盒子里的Cron疯了。

我有一个基本的脚本存储在

/tmp/myscript.sh 

这是脚本中的代码的副本。

 #!/bin/bash AFolderName="archivefolder" AFileName="archive.zip" echo "setting variables" if [ -d $AFolderName ] then rm -r $AFolderName fi echo "checked if folder exists" mkdir $AFolderName cd $AFolderName echo "about to zip" zip -r $(date +%Y%m%d)_$AFileName /var/www/* echo "zipped" echo "about to s3" s3cmd put $(date +%Y%m%d)_$AFileName s3://mytestbucket echo "s3ed" cd .. rm -r $AFolderName echo "done" 

我已经完成了crontab -e并根据格式添加了一个作业,并且作业似乎运行,因为我在临时文件夹中获取了一个日志文件。 然而,没有什么在日志文件中,没有东西上传到亚马逊…

这是什么在crontab

 */10 * * * * root /tmp/myscript.sh > /tmp/ms.log 

我究竟做错了什么? 什么问题都没有提示。 顺便说一下脚本是以root身份运行的。

同意你需要以root用户身份login或$ sudo su才能真正成为root用户,然后执行# crontab -e并从你的crontab行中取出“root”,因为看起来你发现它不喜欢。

然后你可以以root身份运行你的脚本 – 就像你已经拥有它一样。

你确定文件的执行标志翻转了,( ls -l /tmp/myscript.sh ),而/ tmp没有挂载noexecute? ( mount )空的日志文件将由shell创build,只是由于redirect。 但是,这并不意味着脚本实际上在运行。 由于您没有redirect错误输出,您将永远不会看到该消息。 (虽然它可能邮寄给根用户?)

除了上述,还有一些事情要尝试:
A)从命令行手动运行脚本。 确保它确实做了一些事情。
B)您可能需要在脚本开始时导入configuration文件。 否则,你可以结束你的脚本可能需要的path和环境variables。
C)redirect来自cron作业的错误输出。 对于同一个文件,最后2>&1 ,或者与2> diff_file.txt分开的文件。 这可能会给你一些洞察到哪里出了问题。

– 克里斯托弗·卡雷尔

正确的方法是做到这一点

这是s3cmd行需要sudo脚本的代码的副本。

 #!/bin/bash AFolderName="archivefolder" AFileName="archive.zip" echo "setting variables" if [ -d $AFolderName ] then rm -r $AFolderName fi echo "checked if folder exists" mkdir $AFolderName cd $AFolderName echo "about to zip" zip -r $(date +%Y%m%d)_$AFileName /var/www/* echo "zipped" echo "about to s3" sudo s3cmd put $(date +%Y%m%d)_$AFileName s3://mytestbucket echo "s3ed" cd .. rm -r $AFolderName echo "done" 

crontab需要删除ROOT。

* / 10 * * * * /tmp/myscript.sh> /tmp/ms.log