很多人说问题出在环境上,但我似乎仍然无法解决这个问题。顺便说一句,我使用 Ubuntu 9.10 以用户身份登录,然后sudo -s
使用以下命令:s3cmd put file s3://bucket
>> 成功了!下面是用于测试的简单脚本:
#! /bin/bash
env >/tmp/cronjob.log
s3cmd 放置文件 s3://bucket
发出命令crontab -e
* * * * * /opt/script 2>&1 | logger
然后使用 tail 来记录系统日志
12 月 3 日 23:22:01 ubuntu CRON[10795]: (root) CMD (/opt/script 2>&1 | logger)
但通过在 s3Fox Organizer 上验证,该文件未被上传。
(我尝试过更改#! /bin/sh
(无效)、将 cron 置于/etc/crontab
(无效)、设置HOME=/home/user
(无效)
还有其他什么选择可以尝试?或者其他调试此问题的方法。
谢谢
答案1
我也遇到了同样的问题。我的情况是缺少配置文件(不同的环境变量):
s3cmd -c /root/.s3cfg --no-progress -v put $TODAY_FILE $BUCKET 2>&1
如果您将像这样调用命令:
s3cmd command options 2>&1 | logger
您应该能够在日志中看到真正的问题。
答案2
对我来说,有效的方法是确保HOME
将其设置为正确的路径。如果你可以在用户下运行命令乔那么你的脚本看起来应该是这样的:
HOME=/home/joe
s3cmd ...
答案3
改变
s3cmd put file s3://bucket
到
s3cmd put file s3://bucket > /tmp/s3cmd.log
这样你就能知道 s3cmd 遇到了什么类型的问题。
答案4
cron 在以下情况下运行root user
,请确保您的 root 用户具有 s3cmd 配置,否则请为 root 用户复制它们
cp -i /home/ubuntu/.s3cfg /root/.s3cfg