Escreva o log para uma declaração falsa de uma condição if que retorna a saída 2

Escreva o log para uma declaração falsa de uma condição if que retorna a saída 2

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 gravar apenas um log na saída 2? Isso poderia ser possível no crontab?

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

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

Responder1

Para escrever seu erro ao stderrusar o 1>&2redirecionamento:

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

Fluxos padrão

Tudo sobre redirecionamento

Responder2

Você poderia usar logger( man logger) porque ele está sendo executado em cron. E você realmente não precisa dos códigos de saída porque 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

informação relacionada