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 stderr
usar o 1>&2
redirecionamento:
echo "Current year is not $date" 1>&2
exit [number]
está especificando um código de retorno de [number]
.
Veja também:
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