Script de logrotate não é enviado para s3

1

Estou tentando usar o logrotate para fazer upload de arquivos de log dos meus trilhos e comandos nginx uma vez por dia. Quando eu executo o comando logrotate manualmente, os arquivos são carregados com sucesso, mas ele nunca faz isso sozinho. Eu tentei usar lastaction e também postrotate, mas na verdade nem uploads para S3. Há algo trivial que eu esteja sentindo falta?

/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
}

EDIT: Abaixo está a maneira correta de fazer isso. Então, ao invés de usar o script lastaction, chame um script de shell.

lastaction
  ./rails_reload_and_upload.sh
endscript

que contém

#/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/
    
por John 04.08.2015 / 09:07

1 resposta

2

Eu diria que é mais provável que rvmsudo ou s3cmd precisem de variáveis de ambiente extras para serem executadas com êxito, que não são definidas no contexto do logrotate, mas que estão em sua sessão de shell interativa. Eu não ficaria surpreso se rvmsudo não estiver disponível no restritivo PATH que o cron define.

    
por 04.08.2015 / 09:24