实时将日志尾随到摘录中 [英] Tail a log into an excerpt in real time

查看:0
本文介绍了实时将日志尾随到摘录中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在运行一个进程,在该进程运行期间,我需要从守护进程捕获日志。我已经拼凑出了一个解决方案,但我希望有人能给我一个稍微优雅一点的方法。让我恼火的是,因为我使用set -e来提醒我任何问题,所以kill会从tail生成一个错误,我必须用|| :吃这个错误,这对我来说是一个丑陋的黑客攻击。

#!/bin/bash
set -e
LOGDIR="/path/to/logs"
LOCKFILE="/path/to/lockfile"
NOW=$( date +'%Y-%m-%d-%H%M' )

bail() {
   echo "$(hostname) $(pwd) error in line $1 of THING" | mail -s "Error: THING on $(hostname) line# $1" me@example.com
}

if [ -f $LOCKFILE ] ; then
   echo "$(hostname) $(pwd) ${0} is locked $(ls -l ${LOCKFILE})"| mail -s "LOCKED: THING" me@example.com
   exit
else
   trap "rm -f $LOCKFILE" EXIT
   trap 'bail $LINENO' ERR
fi

echo $$ > $LOCKFILE
/bin/date >> $LOCKFILE

tail -f path/to/daemon/logfile > $LOGDIR/${NOW}-THING.log &
TAILPID=$!

sleep 1
/path/to/monitored-process
sleep 1 # Allow for last couple log entries to flush
kill $TAILPID
wait $TAILPID || : # Need the no-op to eat the expected error from `kill`ing tail

/bin/rm -f $LOCKFILE

推荐答案

在我看来,您所拥有的相当优雅。

作为一种解决方案,将set +e放在KILE之前,将set -e放在后面如何?由于您预期的是Tail被终止时的错误状态,因此不要查找它。

这篇关于实时将日志尾随到摘录中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆