当日志文件中出现特定文本时执行命令

当日志文件中出现特定文本时执行命令

有什么方法可以实现这样的目标吗?每当日志文件中出现某些特定单词(或它们的组合)时,我都想执行特定操作。例如:每当日志文件中出现单词“exception”时,我都想执行“systemctl restart myservice”。我很好奇,因为我可能需要这个作为临时解决方法。提前致谢!

答案1

您可以执行与以下示例类似的操作。请参阅man tail使用的选项:

/usr/bin/tail -f --follow=name --retry -n0 $logfile |\
  /bin/grep --line-buffered "exception" \
  | while read -r line ; do
    # do something with $line if you wish
    systemctl restart your_service
done

相关内容