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

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

很多人说问题出在环境上,但我似乎仍然无法解决这个问题。顺便说一句,我使用 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

相关内容