Многие говорили, что проблема связана с окружающей средой, но я все еще не могу решить эту проблему. Кстати, я использую вход в 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 для системных журналов
3 декабря 23:22:01 ubuntu CRON [10795]: (root) CMD (/ opt / script 2> & 1 | logger)
Но при проверке в s3Fox Organizer файл не загружается.
(Я попытался изменить #! /bin/sh
(без эффекта), надевая кроны /etc/crontab
(нет эффекта), установка HOME=/home/user
(нет эффекта)
Какие еще варианты попробовать? Или другие способы отладки этой проблемы.
Спасибо
Что сработало для меня, так это убедиться, что HOME
установлен на правильный путь. Если вы можете запустить команду под пользователем Джо тогда ваш скрипт должен выглядеть так:
HOME=/home/joe
s3cmd ...
У меня такая же проблема. В моем случае отсутствовал файл конфигурации (разные переменные env):
s3cmd -c /root/.s3cfg --no-progress -v put $TODAY_FILE $BUCKET 2>&1
Если вы вызовете свою команду, например:
s3cmd command options 2>&1 | logger
Вы должны увидеть в журналах настоящую проблему.
+ Изменить
s3cmd put file s3://bucket
к
s3cmd put file s3://bucket > /tmp/s3cmd.log
Так вы сможете увидеть, в чем проблема у s3cmd.
Убедитесь, что вы ссылаетесь на s3cmd, используя его полный путь (/ usr / bin / s3cmd) в своем скрипте. Убедитесь, что вы запустили s3cmd --configure от имени пользователя, под которым будет работать cron, обычно root.
cron работает под root user
, убедитесь, что ваш пользователь root имеет конфигурацию s3cmd, в противном случае скопируйте их для пользователя root
cp -i /home/ubuntu/.s3cfg /root/.s3cfg
Проверь это $HOME/.s3cfg
содержит ключ доступа и секретный код для s3. Если не, s3cmd
попытается получить их из переменных env, которые отличаются во время сеанса cron.
У меня была такая же проблема, и я попытался выяснить, почему она не работает. Мое решение заключалось в том, чтобы добавить следующие строки в начало моего скрипта:
export HOME=/home/$USERNAME
cd /home/$USERNAME
Также вы должны вызвать s3cmd с помощью:
/usr/bin/s3cmd
ИЛИ поместите следующую строку в начало вашего скрипта:
PATH=$PATH:/usr/bin