我最近发现了 /usr/bin/logger,发现它非常好。
我注意到它包含一个优先级参数(-p)(facility.info、facility.alert等)。
因此,如果我只想记录 stdin,我可以这样做:
stuff | logger -p cron.info
只记录 stderr,方法如下:
stuff 2>&1 > /dev/null | logger -p cron.err
要记录 stdout 和 stderr :
stuff 2> >(logger -p cron.err) | logger -p cron.info
我想知道是否有更简洁的方法来做到这一点,以避免大量的复制粘贴。
有没有办法可以实现这样的目标?
logging -F cron -s info -e err stuff
非常感谢
答案1
如果所需的语法是
logging cron info err stuff
在这种情况下,请使用以下函数:
logging() {
if [ "$#" -lt 4 ]; then
echo "Too few arguments." >&2
return 1
else
local prefix postfix1 postfix2
prefix="$1"
postfix1="$2"
postfix2="$3"
shift 3
"$@" 2> >(logger -p "$prefix.$postfix2") | logger -p "$prefix.$postfix1"
fi
}
笔记:
- 您可以构建一个独立脚本。
- 解析
-F
,-s
,-e
是可能的,尽管不像上面那么简单吻-y 方法。