很多人都说这个问题跟环境有关,但是我似乎还不能解决这个问题。 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