温馨提示×

怎样用脚本读debian日志

小樊
37
2026-10-27 15:04:29
栏目: 智能运维

在 Debian 里“读日志”通常有两层意思:
1)实时查看 / 搜索日志文件
2)用脚本自动化分析日志

下面按常见场景给你一套实用的做法。


一、Debian 日志在哪里

1. 传统日志(rsyslog)

/var/log/syslog
/var/log/auth.log
/var/log/kern.log
/var/log/dpkg.log

2. systemd 日志(journald,推荐)

journalctl

二、最基础的“读日志”命令

1. 查看系统日志

sudo less /var/log/syslog

2. 实时跟踪日志

sudo tail -f /var/log/syslog

3. 搜索关键字

grep "error" /var/log/syslog

三、用 systemd 日志(更现代)

查看本次启动日志

journalctl -b

实时查看

journalctl -f

只看某个服务

journalctl -u nginx.service

按时间范围

journalctl --since "2026-01-21 00:00:00" --until "2026-01-21 23:59:59"

四、用脚本读 Debian 日志(重点)

示例 1:Shell 脚本统计错误次数

#!/bin/bash

LOG=/var/log/syslog

echo "Error 出现次数:"
grep -c "error" "$LOG"

echo "Top 10 错误来源:"
grep "error" "$LOG" | awk '{print $5}' | sort | uniq -c | sort -rn | head

运行:

chmod +x log_check.sh
./log_check.sh

示例 2:用 journalctl 在脚本里读日志

#!/bin/bash

journalctl -u ssh.service --since "1 hour ago" | grep "Failed password"

示例 3:Python 脚本读日志

log_path = "/var/log/auth.log"

with open(log_path) as f:
    for line in f:
        if "Failed password" in line:
            print(line.strip())

示例 4:自动报警(简单版)

#!/bin/bash

COUNT=$(grep -c "Failed password" /var/log/auth.log)

if [ "$COUNT" -gt 10 ]; then
    echo "SSH 暴力破解警告" | mail -s "安全警告" admin@example.com
fi

五、日志轮转要注意

Debian 默认用 logrotate:

/var/log/syslog.1
/var/log/syslog.2.gz

脚本里建议用:

zcat /var/log/syslog.*.gz

六、推荐实践

✅ 新系统:优先用 journalctl
✅ 老系统 / 嵌入式:看 /var/log
✅ 脚本分析:Shell + awk / Python
✅ 安全日志:重点看 auth.log


如果你愿意,可以告诉我:

  • 你是 看哪种日志(系统 / 安全 / 服务)
  • 想 实时还是定时分析
  • 用 bash 还是 python

我可以直接帮你写一套可用的脚本。

0 踩