linux - 在Linux中连续监视日志,并在发现错误时发送电子邮件?

标签 linux bash shell command-line

我试图监视Linux中的交易日志,并且每当检测到任何“错误”时,它都应该向我发送电子邮件,并且该监视过程应该永远持续下去。我当前的解决方案如下:

tail -f trade.log | grep -iE 'error' | mail -s 'Error Detected' XXX@XXX.com

但这似乎不起作用。由于它可能会发送一封电子邮件,但是电子邮件正文为空,因此仅发送一封电子邮件。我应该怎么办?并欢迎其他任何好的解决方案。谢谢!!

最佳答案

您可以运行两个进程。一个进程以-f trade.log结尾,并将所有输出发送到带有时间戳的文件[https://www.commandlinefu.com/commands/view/7151/monitor-a-file-with-tail-with-timestamps-added]。另一个过程在每个时间单位运行。它为“错误”而努力,并将行添加到名为“报告”的新文件中。然后使用类似于mail -s "Subject" address@someisp.com < textfile_with_mail_contents.txt的电子邮件发送报告内容。哦,您应该在使用完每个文件后将其删除。这样,当您运行第二个进程时,就不会意外地捕获重复项。

关于linux - 在Linux中连续监视日志,并在发现错误时发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50732465/

相关文章:

linux - 从Linux终端按ip获取网络带宽统计信息

php - 如何设置 wget cron 作业命令

macos - bash:ps grep用于Umlaut(OS X)处理

linux - 无法删除设备/dev/loop0

sql - 通过linux使用mysqldump导出时将数据库名称添加到sql文件中

linux - "syntax error: unexpected end of file"使用 ssh

linux - 脚本没有替换文件名的前缀

linux - 将参数以 txt 文件的形式传递到 shell 脚本中

python - 按数据组从文件中改组文本

bash - 无法转义 Unix 命令中的某些字符