Запишите журнал для ложного утверждения условия if, которое возвращает выход 2

Запишите журнал для ложного утверждения условия if, которое возвращает выход 2

У меня есть скрипт, который запускается каждые 5 минут с двумя выходами в условии.

#!/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

Как мне указать, что нужно записывать журнал только при выходе 2? Возможно ли это в crontab?

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

Я понял, что " >> скрипт.log "пишет все возвращение сценария и" 2 >> script.err "пишет только если скрипт не отработал правильно. Так что я не знаю, есть ли шанс написать только где выход 2 в скрипте.

решение1

Чтобы написать свою ошибку, stderrиспользуйте 1>&2перенаправление:

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

exit [number]указывает код возврата [number].

Смотрите также:

Файловые дескрипторы

Стандартные потоки

Все о перенаправлении

решение2

Вы можете использовать logger( man logger), потому что он запускается из cron. И вам на самом деле не нужны коды выхода, потому что вы ничего с ними не делаете, по крайней мере, в приведенном выше фрагменте.

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

Связанный контент