Logging 需要每隔15分钟用“grep”标记一次运行日志;关键字";,但是新的线路应该每15分钟检查一次

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和

需要每隔15分钟用“关键字”grep一次运行日志,但每隔15分钟应该检查一次新行。它适用于sun solaris,因此手表将无法工作

例如,在第一次运行时,它应该用关键字grep前200行。
对于下一次运行,它应该从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}