条件句に 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 >> スクリプト.err 」スクリプトが正しく実行されなかった場合にのみ書き込みます。したがって、スクリプトの exit 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