微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实时追踪日志摘录

我有一个正在运行的进程,因此我需要在进程运行期间捕获守护进程中的日志。 我有一个解决scheme,我拼凑在一起,但我希望有人能指出我稍微更优雅的方式来做到这一点。 令我感到厌烦的是,因为我使用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" [email protected] } if [ -f $LOCKFILE ] ; then echo "$(hostname) $(pwd) ${0} is locked $(ls -l ${LOCKFILE})"| mail -s "LOCKED: THING" [email protected] 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

awk,pipe道和尾巴-f给予意想不到的行为

文件统计给定模式的行数

find一个关键字,而拖尾日志,然后做X

获取Windows中一个巨大文件的最后n行或者字节(比如Unix的尾部)。 避免耗时的select

在bash脚本中使用grep对日志文件使用tail -f

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

作为一个解决方案,如何在杀死之前放置set +e ,并set -e之后? 既然你期待尾巴死亡时的错误状态,不要去寻找它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐