Bash se o script for chamado do terminal echo stdout para terminal, se do cron não ecoar a saída

3

Eu gostaria de ter um script de watchdog de serviço ecoando o status para a tela se chamado como ./watchdog.sh, mas se ele é executado pelo cron, não há necessidade de ecoar a saída. Qual é o método adequado? Onde o stdout vai quando um script é executado sob o crontab do root?

    
por Gregg Leventhal 13.12.2013 / 20:07

2 respostas

3

Para muitas tarefas do cron que executo, propositadamente, faço com que elas sejam executadas na linha de comando. A saída apropriada é gerada, mas o mesmo script se colocado no crontab. Sempre capture stdout e stderr em um arquivo de log:

00 12 * * 1-5 /home/aws/bin/myscript.sh >> /home/aswartz/rje/cron.log 2>&1

    
por 13.12.2013 / 23:43
3

A saída Cronjob é enviada ao usuário pelo sistema de correio do sistema.

Você pode verificar se o stdout é um terminal:

if [ -t 1 ]; then
     echo Terminal
else
     # not a terminal, don't echo
fi
    
por 13.12.2013 / 21:08