Назад | Перейти на главную страницу

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 для системных журналов

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