Logging 需要每隔15分钟用“grep”标记一次运行日志;关键字";,但是新的线路应该每15分钟检查一次
需要每隔15分钟用“关键字”grep一次运行日志,但每隔15分钟应该检查一次新行。它适用于sun solaris,因此手表将无法工作 例如,在第一次运行时,它应该用关键字grep前200行。Logging 需要每隔15分钟用“grep”标记一次运行日志;关键字";,但是新的线路应该每15分钟检查一次,logging,grep,solaris,tail,Logging,Grep,Solaris,Tail,需要每隔15分钟用“关键字”grep一次运行日志,但每隔15分钟应该检查一次新行。它适用于sun solaris,因此手表将无法工作 例如,在第一次运行时,它应该用关键字grep前200行。 对于下一次运行,它应该从201行grep到400行,以此类推。如果您不想grep tail-f的输出,您必须记住上次grep时的位置。 当您可以控制日志文件时,您有一些可能性: 确保每行以时间戳开头 当某些行有而某些行没有时,可以使用awk选择日志文件的一部分 在日志文件中添加一个唯一的标记,使用awk和
对于下一次运行,它应该从201行grep到400行,以此类推。如果您不想grep tail-f的输出,您必须记住上次grep时的位置。
当您可以控制日志文件时,您有一些可能性:
- 确保每行以时间戳开头
当某些行有而某些行没有时,可以使用awk选择日志文件的一部分 - 在日志文件中添加一个唯一的标记,使用awk和grep在最后两个标记之间选择日志李>
- 将日志文件移动到另一个位置(应用程序不应具有打开的文件句柄)
日志文件中只有最后15分钟的时间 - 从两个文件之间的差异复制grep之后的日志文件和下次grep。
当文件较大时,可能会漏掉一些行。您需要一个额外的tmp文件来防止这种情况
差不多
LINECOUNTFILE=/var/tmp/mycount
LOGFILE=/var/xxxx.log
if [ -f ${LINECOUNTFILE} ]; then
lastlinecount=$(cat ${LINECOUNTFILE})
else
lastlinecount=0
fi
if [ -f ${LOGFILE} ]; then
newlinecount=$(cat ${LOGFILE} | wc -l)
# Select a solution as described at
# http://unix.stackexchange.com/questions/47407/cat-line-x-to-line-y-on-a-huge-file
echo TODO grep from the file between $lastlinecount and $newlinecount
else
newlinecount=0
fi
echo ${newlinecount} > ${LINECOUNTFILE}