s3cmd在命令行上不在cron上运行

很多人都说这个问题跟环境有关,但是我似乎还不能解决这个问题。 BTW我正在使用Ubuntu 9.10login作为用户,然后sudo -s使用这个命令: s3cmd put file s3://bucket >>工作! 现在这里是用于testing的简单脚本:

 #! /bin/bash env >/tmp/cronjob.log 

s3cmd放置文件s3://存储桶

发出命令crontab -e

 * * * * * /opt/script 2>&1 | logger 

然后使用尾部到syslogs

12月3日23:22:01 Ubuntu的CRON [10795] :(根)CMD(/ opt / script 2>&1 | logger)

但通过在s3Fox Organizer上validation,文件没有上传。

(我试着改变#! /bin/sh (没有效果),把cron放在/etc/crontab (没有效果),设置HOME=/home/user

还有什么其他的select可以尝试? 或者用其他方法来debugging这个问题。

谢谢

我有同样的问题。 在我的情况下,它是缺lessconfiguration文件(不同的环境variables):

 s3cmd -c /root/.s3cfg --no-progress -v put $TODAY_FILE $BUCKET 2>&1 

如果你会像下面这样调用你的命令:

 s3cmd command options 2>&1 | logger 

你应该能够看到日志真正的问题。

什么对我来说是确保HOME被设置为正确的path。 如果你可以在用户joe下运行命令,那么你的脚本应该是这样的:

 HOME=/home/joe s3cmd ... 

更改

s3cmd put file s3://bucket

s3cmd put file s3://bucket > /tmp/s3cmd.log

这样你可以看到s3cmd有什么问题。

确保在脚本中使用完整path(/ usr / bin / s3cmd)引用s3cmd。 检查你已经运行s3cmd –configure作为cron将要运行的用户,通常是root。

cron在root user下运行,确保你的root用户拥有s3cmdconfiguration,否则拷贝它们为root用户

cp -i /home/ubuntu/.s3cfg/root/.s3cfg

检查$HOME/.s3cfg包含s3的访问密钥和密码。 如果不是的话, s3cmd将尝试从cron会话期间不同的envvariables中获取它们。

我有同样的问题,我试图找出为什么它没有运行。 我的解决scheme是将以下行添加到我的脚本的顶部:

export HOME=/home/$USERNAME cd /home/$USERNAME

你也应该打电话给s3cmd:

 /usr/bin/s3cmd 

或者把下面一行放到脚本的顶部:

 PATH=$PATH:/usr/bin