📌  相关文章
📜  shell 脚本监控日志文件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:20:07.931000             🧑  作者: Mango

Shell脚本监控日志文件

Shell脚本监控日志文件通常用于监控系统的运行状况,以便及时发现并处理错误信息。在本文中,我们将介绍如何使用Shell脚本来监控日志文件。

监控单个日志文件

下面的Shell脚本会监控单个日志文件,如果日志文件的内容发生变化,它会向标准输出打印出最新的内容:

#!/bin/bash

logfile=/var/log/messages

tail -f $logfile | while read line ; do
    echo "$line"
done

该脚本使用tail命令来跟踪日志文件的最新内容,将其输出到标准输出。我们可以将脚本保存为一个文件,例如logmonitor.sh,并使用以下命令进行测试:

$ sudo sh logmonitor.sh

在输出窗口中,您可以看到日志文件中最新的内容。

监控多个日志文件

如果需要监控多个日志文件,我们可以将单个日志监控脚本做如下修改:

#!/bin/bash

logfiles="/var/log/messages /var/log/auth.log /var/log/syslog"

for file in $logfiles; do
    echo "Monitoring $file ..."
    tail -f $file | while read line ; do
        echo "$line"
    done
done

该脚本使用一个包含多个日志文件路径的字符串来设置监控文件列表,然后对每个文件都执行监控操作。我们可以将其保存为multilogmonitor.sh,并使用以下命令进行测试:

$ sudo sh multilogmonitor.sh

在输出窗口中,您可以看到多个日志文件中最新的内容。

监控日志文件并执行操作

除了将最新的日志信息输出到标准输出以外,我们还可以在监控日志文件时执行其他操作。例如,在发现关键字错误时可以发送邮件或者短信提醒我们。

下面的脚本演示了如何在日志文件中匹配关键字,并在匹配成功时执行action.sh脚本:

#!/bin/bash

logfile=/var/log/messages
key_word="error"

tail -f $logfile | while read line ; do
    if [[ "$line" == *"$key_word"* ]]; then
        echo "Matched: $line"
        /path/to/action.sh
    fi
done

该脚本使用tail命令来跟踪日志文件的最新内容。在每一行数据读取完成后,它使用if语句来判断该行是否包含关键字。如果包含,则输出该行并执行action.sh脚本。

以上脚本可以保存为matchmonitor.sh,并使用以下命令测试:

$ sudo sh matchmonitor.sh

现在,当在日志文件中匹配到错误关键字时,action.sh脚本将被执行。

结论

本文介绍了如何使用Shell脚本来监控日志文件,并在匹配关键字时执行其他操作。当需要监控多个日志文件时,我们可以通过设置监控文件列表来轻松实现。监控日志文件可以让我们及时发现和处理系统错误,提高系统的稳定性和安全性。