我正在运行多个数据收集器脚本,用于从社交平台中提取数据。每个都在自己的日志文件中记录进度。我必须使用ps命令手动监视它们。
我想在bash中创建一个脚本,在执行时告诉我收集器是在运行还是停止。根据我的计划,它将进入日志文件,跳到最后,然后向上搜索日志以获取以下关键字: 1.如果收集器正在运行,则日志文件显示处理行; 2.如果收集器停止,日志文件显示异常;
向上搜索文件以获取上述任何两种情况的最新发生。 我希望它在找到其中任何一个时停止搜索日志文件。 然后我会回应状态。
目前我可以跳到最后然后向上搜索,但如果找到任何一条包含搜索模式的行,我就不知道如何停止搜索。那么 if else 将如何实现呢?
我的代码是
cat **LogFile** | grep -E 'Processing line|Exception' | tail -1
答案 0 :(得分:0)
# using tac
tac /etc/passwd | awk '/Processing Line/{print "Processing Line found...\n" $0;exit}
/Exception/{print "Exception found...\n" $0;exit}'
# Using awk
awk '{line[NR]=$0} # Store all lines into an array, use NR (line number) as element
END{for(i=NR;i>0;i--) # loop through array in reverse
{if(line[i] ~ /Processing Line/) # Exit on match
{print "Processing Line found...\n" line[i];exit}
else if(line[i] ~ /Exception/)
{print "Exception found...\n" line[i];exit}
}
}' /etc/passwd