Gravar log para uma declaração falsa de uma condição if que retorna exit 2

0

Eu tenho um script sendo executado a cada 5 minutos com duas saídas em uma cláusula de condição.

#!/bin/bash
date=$(date +%Y)
if [ $date -eq '2014' ]
then
    echo "Current year is $date"
    exit 0
else
    echo "Current year is not $date"
    exit 2
fi

Como eu poderia especificar para escrever somente um log quando sair 2? Isso poderia ser possível no crontab?

5 * * * * /home/user/script.sh >> script.log 2>> script.err

Eu entendi que "> > script.log" escreve todo o retorno do script e "2 > > script.err" escreve somente se o script não foi executado corretamente. Então eu não sei se há uma chance de escrever somente onde exit 2 no script.

    
por tachomi 20.06.2014 / 17:21

2 respostas

2

Para escrever seu erro para stderr use o 1>&2 redirect:

echo "Current year is not $date" 1>&2

exit [number] está especificando um código de retorno de [number] .

Veja também:

Descritores de arquivos

Standard Streams

Tudo sobre o redirecionamento

    
por 20.06.2014 / 17:29
1

Você pode usar logger ( man logger ) porque está sendo executado em cron . E você realmente não precisa dos códigos de saída porque você não está fazendo nada com eles, pelo menos no trecho acima.

#!/bin/bash
DATE=$(date +%Y)
if [ $DATE -ne '2014' ]; then
    logger -f script.log "Current year is not $date"
fi
    
por 20.06.2014 / 18:00