Introdução
As tarefas do cron são executadas em segundo plano, separadas de qualquer sessão de terminal. Isso é excelente para automação, mas dificulta a depuração: se um script falhar, você não verá a mensagem de erro na tela.
Quando uma tarefa do cron produz uma saída, tradicionalmente o sistema tenta enviá-la por e-mail para o usuário. Em muitos servidores modernos, contêineres ou ambientes de treinamento, o envio de e-mails não está configurado. Nesse caso, a saída pode desaparecer completamente, a menos que você a redirecione por conta própria.
Esse é um dos motivos pelos quais iniciantes costumam achar o cron confuso: a tarefa pode estar sendo executada exatamente conforme o agendamento, mas as mensagens de erro não aparecem no terminal em que o crontab foi criado. A automação em segundo plano exige registros planejados.
Neste laboratório, você aprenderá a capturar essa saída “silenciosa” para depurar falhas. Você vai:
- Simular uma falha: criar uma tarefa do cron que certamente produzirá um erro.
- Redirecionar o erro padrão: usar o operador
2>para capturar as mensagens de erro. - Analisar os logs: ler a saída capturada para confirmar a causa da falha.
Criar uma tarefa do cron com falha
Primeiro, vamos criar propositalmente uma tarefa incorreta para simular uma falha. Vamos instruir o cron a listar um diretório que não existe.
Abra o crontab do seu usuário:
crontab -e
Vá até o final do arquivo, abaixo de quaisquer comentários, e adicione esta linha:
* * * * * ls /this/directory/does/not/exist
Detalhes da configuração:
- Agendamento:
* * * * *(executa a cada minuto). - Comando:
ls ...(tenta listar um caminho que não existe).
Salve e saia do editor.
Agora, aguarde pelo menos um minuto.
Observe o terminal. ...
Nada aparece na tela. Isso é uma falha silenciosa. O comando foi executado, falhou e gerou uma mensagem de erro, mas essa mensagem não tinha para onde ir e foi descartada.
Esse silêncio não significa que “nada aconteceu”. Significa que o processo não tinha um terminal interativo associado. Entender essa diferença é essencial para depurar tarefas agendadas.
Redirecionar o erro padrão (stderr)
Para ver a mensagem de erro, precisamos redirecionar o fluxo de erro padrão (stderr) para um arquivo.
No Linux, os descritores de arquivo são numerados:
- 0: Entrada padrão (stdin)
- 1: Saída padrão (stdout)
- 2: Erro padrão (stderr)
Usamos 2> para redirecionar o canal 2, que contém os erros, para um arquivo.
Isso usa o mesmo modelo de redirecionamento do shell que você aprendeu anteriormente. O cron inicia um comando, o shell gerencia os descritores de arquivo e o redirecionamento determina para onde cada fluxo será enviado.
Abra o crontab novamente:
crontab -e
Altere a linha para que fique exatamente assim:
* * * * * ls /this/directory/does/not/exist 2> /home/labex/project/cron_error.log
Principais alterações:
2>: redireciona o fluxo de erro./home/labex/project/cron_error.log: o caminho absoluto do arquivo de log.- Importante: sempre use caminhos absolutos, como
/home/labex/..., nas tarefas do cron. O cron é executado em um ambiente mínimo e não sabe ao que~ou os caminhos relativos se referem.
- Importante: sempre use caminhos absolutos, como
Esse ambiente mínimo é outro conceito importante do cron. As tarefas agendadas geralmente têm menos variáveis de ambiente, um PATH limitado e nenhum contexto de shell interativo. Por isso, comandos que funcionam manualmente podem falhar no cron quando dependem de suposições implícitas.
Salve e saia.
Analisar o arquivo de log
Aguarde mais um minuto para que a tarefa seja executada novamente.
Agora, verifique se o arquivo de log capturou o erro:
cat ~/project/cron_error.log
Você deverá ver a mensagem de erro registrada claramente: ls: cannot access '/this/directory/does/not/exist': No such file or directory
Limpeza: não é uma boa prática deixar tarefas com falha em execução em segundo plano.
- Abra
crontab -e. - Exclua a linha associada a este laboratório.
- Salve e saia.
Agora você depurou com sucesso uma tarefa em segundo plano capturando sua saída de erro.
Em operações reais, muitos problemas do cron acabam sendo causados por questões de ambiente, caminhos ausentes ou permissões, e não por uma sintaxe de comando incorreta. A saída capturada costuma ser a maneira mais rápida de identificar qual categoria de problema você realmente está enfrentando.
Resumo
Neste laboratório, você aprendeu a lidar com a saída de tarefas do cron executadas em segundo plano:
- O desafio: as tarefas do cron falham silenciosamente quando sua saída não é gerenciada.
- A solução: usar o redirecionamento do erro padrão (
2>) para capturar as mensagens de falha. - Boa prática: sempre registrar a saída de tarefas automatizadas para garantir que você consiga depurá-las quando falharem.
Essa técnica (2> error.log) é essencial para manter scripts de automação confiáveis em qualquer ambiente Linux.



