У меня есть скрипт, который запускается каждые 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