シェルの標準出力をloggerに送るラッパーシェルを作ってみた。
cronで自動実行した際に、標準エラー出力に出力があったときだけメールされ、
通常時はログに吐くだけとなるようにしてみた。
・標準出力は、loggerに送る
・標準エラー出力は、loggerに送った上で、標準エラー出力にも冗長出力する
・コマンドライン
logger_wrapper.sh シェル シェル引数
標準出力と標準エラー出力のパイプを分けるやり方は
試行錯誤の結果名前付きパイプにしてみた。
mktempで一時ファイルを使ってもいいだろう。
#!/bin/bash if [ $# -lt 1 ]; then echo "argument not enough" exit 8 fi THIS_NAME=`basename $0 .sh` EXEC_NAME=`basename $1` LOGGER_OPTS="-t ${EXEC_NAME}" # create named pipe PIPE=${THIS_NAME}_$$.pipe mkfifo ${PIPE} # stderr logging (duplicate to stderr) logger ${LOGGER_OPTS} -s -f ${PIPE} & # execute program $@ 2>${PIPE} | logger ${LOGGER_OPTS} # cleanup rm ${PIPE}