温馨提示×

Debian文件管理中的日志功能如何使用

小樊
39
2025-12-09 08:23:16
栏目: 智能运维

Debian 文件管理中的日志功能使用指南

一 日志体系与存放位置

  • 系统日志默认集中在 /var/log,常见文件与用途如下:
    • /var/log/syslog:系统通用日志(所有设施与级别)。
    • /var/log/auth.log:认证与授权日志(如 SSH 登录)。
    • /var/log/kern.log:内核日志。
    • /var/log/dpkg.log:软件包安装/升级日志。
    • /var/log/boot.log:系统启动过程日志。
    • /var/log/btmp:失败登录尝试记录(二进制,用 lastb 查看)。
  • 现代 Debian 使用 systemd-journaldrsyslog 双通道:journald 负责结构化日志采集与持久化,rsyslog 将日志写入传统文本文件,二者可并行使用。

二 查看与检索日志

  • 传统文本日志常用命令:
    • 实时跟踪:tail -f /var/log/syslog
    • 关键字过滤:grep “error” /var/log/syslog
    • 分页查看:less /var/log/syslog
  • systemd 日志(journalctl)常用命令:
    • 查看全部:journalctl
    • 按服务查看:journalctl -u nginx.service
    • 按时间范围:journalctl --since “2025-12-01 00:00:00” --until “2025-12-01 12:00:00”
    • 查看启动相关:journalctl -b(本次启动)、journalctl -b -1(上次启动)
    • 按优先级:journalctl -p err…alert
    • 实时跟踪:journalctl -f
  • 图形化工具(桌面环境):gnomesystemlogksystemlog

三 日志轮转与清理

  • 使用 logrotate 管理文本日志(推荐)
    • 主配置 /etc/logrotate.conf,服务配置在 /etc/logrotate.d/
    • 典型配置示例(/etc/logrotate.d/syslog):
      /var/log/syslog {
          weekly
          rotate 52
          compress
          delaycompress
          missingok
          notifempty
          create 0640 root adm
      }
      
    • 常用参数说明:
      • weekly/daily/monthly:轮转周期
      • rotate N:保留旧日志份数
      • compress/delaycompress:压缩旧日志(延迟到下次轮转再压缩)
      • missingok/notifempty:文件缺失不报错/空文件不轮转
      • create 0640 root adm:轮转后新建文件的权限与属主
    • 手动执行与调试:
      • 强制执行:sudo logrotate -f /etc/logrotate.conf
      • 调试模式:sudo logrotate --debug /etc/logrotate.d/syslog
    • 运行方式:通常由 /etc/cron.daily/logrotate 每日触发。
  • 清理 systemd 日志(journald)
    • 按时间保留:sudo journalctl --vacuum-time 2weeks
    • 按体积保留:sudo journalctl --vacuum-size 100M
    • 持久化存储:如需将日志保存到磁盘,创建目录 /var/log/journal 并重启 journald(systemd 会自动使用持久化存储)。
  • 手动清理注意事项
    • 不建议直接用 rm 删除正在写入的日志文件,可能导致服务异常或轮转失败;优先使用 logrotatejournalctl 清理。

四 自定义应用日志与轮转示例

  • 应用写入自定义日志文件(示例思路)
    • 在应用配置中指定日志路径,例如 /var/log/myapp.log,并确保运行用户对目录有写权限(如属主 root:adm,权限 0750/0640)。
  • 为自定义日志添加 logrotate 规则(/etc/logrotate.d/myapp)
    /var/log/myapp.log {
        daily
        rotate 7
        compress
        delaycompress
        missingok
        notifempty
        create 0640 root adm
        postrotate
            systemctl reload myapp.service >/dev/null 2>&1 || true
        endscript
    }
    
    • 说明:postrotate 用于在轮转后通知应用重新打开日志文件(按需调整服务名与命令)。

五 实用命令速查表

目标 命令示例
实时看系统日志 tail -f /var/log/syslog
查 SSH 登录失败 grep “Failed password” /var/log/auth.log
查某服务最近 1 小时日志 journalctl -u nginx.service --since “1 hour ago”
清理两周前 journal 日志 sudo journalctl --vacuum-time 2weeks
强制执行一次轮转 sudo logrotate -f /etc/logrotate.conf
调试某服务轮转规则 sudo logrotate --debug /etc/logrotate.d/myapp

0