Tengo un script que se ejecuta cada 5 minutos con dos salidas en una cláusula de condición.
#!/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
¿Cómo podría especificar que solo se escriba un registro al salir 2? ¿Podría ser esto posible en crontab?
5 * * * * /home/user/script.sh >> script.log 2>> script.err
he entendido que " >> script.log "escribe toda la devolución del guión y" 2 >> script.err "escribe solo si el script no se ejecutó correctamente. Así que no sé si existe la posibilidad de escribir solo en la salida 2 del script.
Respuesta1
Para escribir su error para stderr
usar la 1>&2
redirección:
echo "Current year is not $date" 1>&2
exit [number]
está especificando un código de retorno de [number]
.
Ver también:
Respuesta2
Podrías usar logger
( man logger
) porque se ejecuta desde cron
. Y realmente no necesitas los códigos de salida porque no estás haciendo nada con ellos, al menos en el fragmento anterior.
#!/bin/bash
DATE=$(date +%Y)
if [ $DATE -ne '2014' ]; then
logger -f script.log "Current year is not $date"
fi