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

Сценарий logrotate не загружается в s3

Я пытаюсь использовать logrotate для загрузки файлов журнала с моих команд rails и nginx один раз в день. Когда я запускаю команду logrotate вручную, файлы загружаются успешно, но сама по себе этого никогда не происходит. Я пробовал использовать lastaction, а также postrotate, но на самом деле ни одна из них не загружается в 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/

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