实时监控日志以查找错误。如果出现错误 = 重新运行命令并重新启动日志监控,如果未发现错误 = 继续监控

实时监控日志以查找错误。如果出现错误 = 重新运行命令并重新启动日志监控,如果未发现错误 = 继续监控

我正在开发的 bash 脚本中的一个进程经常会悄悄失败(它继续运行而没有错误代码,但它会将错误写入其日志文件中)。

一旦错误出现在日志文件中,我希望重新启动该过程(并继续监视日志文件)。当该过程完成时,我希望运行脚本的其余部分。

我搜索了很多次,也尝试了很多方法,包括 grep 和 tail,if、while、管道等,但我就是无法让它工作。

正确的方法是什么?

这是我基本上想要的一种虚构语言(不是 bash/shell):

:START
RUN error_prone_process
IF "Error text" ~/logfile.txt
   KILL error_prone_process
   GOTO START

答案1

您的“If”命令正在检查“错误文本”字样是否确实是日志文件?虽然不完全确定那里的尝试...我会使用正则表达式:

if grep -x 'ErrorText' "$File"; then
   KILL error_prone_process
   GOTO START
fi

答案2

如果您有权访问系统配置,请考虑使用监控。为了监控日志,我让 monit 执行一个脚本,该脚本将检查日志并在另一个文件中写入 OK 或 ERROR。然后我检查该文件的文件长度和新鲜度。

相关内容