Cron está em execução, mas não fornece dados de saída

0

Estou tentando fazer com que minhas instâncias do Amazon EC2 parem e iniciem por um crontab. As ferramentas EC2 Api são instaladas com sucesso. Manualmente funciona.

O cron (que eu coloquei com o comando crontab -e ):

10 * * * * ubuntu /usr/bin/ec2-stop-instances [instanceid] > /tmp/ec2.log

O arquivo /tmp/ec2.log é criado. Quando eu uso o comando grep CRON /var/log/syslog , vejo que o cron foi executado. No entanto, não obtenho nenhuma saída no arquivo /tmp/ec2.log . Eu defini todas as variáveis da Amazon necessárias.

Mesmo que eu propositalmente crie um cron errado, assim:

10 * * * * ubuntu /usr/bin/ec2-stop-instancwweqes [instanceid] > /tmp/ec2.log

Eu não recebo saída no arquivo. Não deveria haver um erro? Eu também tentei não definir o usuário:

10 * * * * /usr/bin/ec2-stop-instances [instanceid] > /tmp/ec2.log

E comando direto:

10 * * * * ubuntu ec2-stop-instances [instanceid] > /tmp/ec2.log

Alguém por favor pode me ajudar? Se eu puder de alguma forma depurar, posso chegar à solução.

    
por Youri 22.10.2013 / 11:16

1 resposta

2

O operador "> '- apenas redireciona tudo o que está escrito para sua stdout (verifique: link ). O Stderr é um outputstream separado, é por isso que o seu cron errado não funciona, já que ele grava no stderr (um shell típico mostra stdout e stderr). Para anexar stderr e stdout a um arquivo, use '& amp; >' em vez de '>'.

Agora para o seu problema: parece Ec2-stop-instâncias não está escrevendo para stdout nem. Usando

10 * * * * ubuntu /usr/bin/ec2-stop-instances [instanceid] &> /tmp/ec2.log

deve corrigir seu problema.

Outra maneira de escrever é redirecionar stderr (geralmente stream 1) para onde stdout (geralmente stream 1) vai acrescentando 2 > & 1 ao seu constructo:

10 * * * * ubuntu /usr/bin/ec2-stop-instances [instanceid] > /tmp/ec2.log 2&>1
    
por bverhagen 22.10.2013 / 14:36