Por que não consigo ver a saída de tarefas agendadas no meu terminal?

0

Estou aprendendo como usar o crontab e, nessa busca, o que eu queria fazer era imprimir algo simples no shell. Então eu fiz crontab -e e digitei o seguinte

* * * * * bash /etc/test.sh

test.sh

echo $NODE_ENV

Agora, o que eu espero é que o cronjob imprima o valor de NODE_ENV a cada um minuto no shell, o que não acontece. Por que não imprime isso? Não deve imprimir ou estou fazendo algo errado?

Algumas coisas que eu já tentei.

$ ps aux | grep crond    
ubuntu   15438  0.0  0.0  11284   936 pts/1    S+   09:37   0:00 grep --color=auto crond

/var/log não possui um arquivo cron.log criado, portanto, nenhum registro de log se meu trabalho foi realmente executado.

Estou executando este comando na instância do Amazon EC2 no ubuntu 16.04, qualquer saída que você precisar, por favor, avise-me.

    
por Saras Arya 21.01.2017 / 10:39

1 resposta

3

O Cron não executa comandos usando um terminal que você abriu. Ele executa trabalhos em segundo plano e salva a saída a ser enviada para você (se você tiver configurado a entrega de mensagens).

Se você quiser ver a saída de um cronjob, a maneira mais simples é redirecionar a saída:

* * * * * bash /etc/test.sh >> /some/output/file 2>&1

Depois, olhe esse arquivo em um terminal que você abriu:

tail -f /some/other/file

No Ubuntu 16.04 e acima, usando o systemd, para visualizar os logs do cron, faça:

journalctl -u cron

E o daemon cron é apenas cron , não crond :

$ systemctl status cron
● cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-01-12 19:02:04 IST; 1 weeks 1 days ago
     Docs: man:cron(8)
 Main PID: 1022 (cron)
    Tasks: 1
   Memory: 8.6M
      CPU: 24.967s
   CGroup: /system.slice/cron.service
           └─1022 /usr/sbin/cron -f
    
por muru 21.01.2017 / 11:08