
eu tenho esse cron
38 * * * * /bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\'''
Eu tenho esse cron com um usuário diferente, então troco de usuário para implantar
sudo su deploy
crontab -e
e eu vejo meu cron, então sigo o log sob o usuário root
tail -n300 -f /var/log/syslog
e eu vejo meu cron
Jul 5 11:38:01 ip-10-70-75-234 CRON[4971]: (deploy) CMD (/bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\''')
Jul 5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)
Mas o cron não está em execução ou há um problema de permissão... Quando executo a tarefa no console, ela funciona muito bem, mas não no cron... alguma ideia do que estou perdendo
este é o Ubuntu 12.04 LTS
Talvez eu possa registrar uma lista mais detalhada em algum lugar para ver os erros
Responder1
CRON entrega a saída dos aplicativos (stdout, stderr) via correio local. Aparentemente, o Ubuntu não possui um MTA (Mail Transfer Agent) instalado por padrão atualmente. CRON imprime uma notificação no arquivo de log do sistema sempre que uma entrega falha:
Jul 5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)
Você pode instalar um MTA, por exemplo, postfix, apenas para uso interno (local), por exemplo
aptitude install postfix
Durante a instalação, você será questionado sobre qual configuração padrão usar. Você deve selecionar a Local only
configuração.
Depois disso, você pode encontrar a saída dos aplicativos executados pelo CRON usando
tail -f /var/mail/<your_username>
É claro que você também pode gravar a saída do log em um arquivo de log dedicado ou canalizar/redirecionar a saída para um arquivo usando a funcionalidade interna do shell...