Сценарий Logrotate, не загружающий на s3

Я пытаюсь использовать logrotate для загрузки файлов журнала от моих направляющих и команд nginx один раз в день. Когда я выполняю команду logrotate вручную, файлы успешно загружают, но она никогда не делает это самостоятельно. Я попытался использовать lastaction и также поствращаюсь, но ни один на самом деле не загружает на S3. Действительно ли там что-то тривиально, который я пропускаю?

/home/deploy/www/mysite.com/log/*log {
su
daily
dateext
dateformat _%Y_%m_%d
rotate 3
missingok
dateext
compress
delaycompress
notifempty
copytruncate
sharedscripts
lastaction
  rvmsudo passenger-config reopen-logs;
  /usr/bin/s3cmd sync /home/deploy/www/mysite.com/log/*.gz s3://mysite_com/logs/rails/
endscript
}

Править: Ниже исправленный способ сделать это. Таким образом вместо того, чтобы использовать lastaction сценарий, назовите сценарий оболочки вместо этого.

lastaction
  ./rails_reload_and_upload.sh
endscript

который содержит

#/bin/bash

./reload_rails_logs.sh
/usr/bin/s3cmd --config /home/username/.s3cfg sync /home/deploy/www/mysite.com/log/*.gz s3://mysite_com/logs/rails/
1
задан 4 August 2015 в 21:06
1 ответ

Я бы сказал, что наиболее вероятно, что либо rvmsudo , либо s3cmd для успешной работы потребуются дополнительные переменные среды, которые не установлены в контексте logrotate, но находятся в ваш интерактивный сеанс оболочки. Я не удивлюсь, если rvmsudo не будет доступен в ограничительном PATH , который устанавливает cron.

2
ответ дан 3 December 2019 в 20:49

Теги

Похожие вопросы