插件窝 干货文章 systemd 日志维护指南(附实例)

systemd 日志维护指南(附实例)

日志 journalctl bash Systemd 202    来源:    2025-04-20

Systemd 日志维护指南

Systemd 提供了强大的日志系统 journald,它收集并管理来自内核、系统服务和应用程序的日志。以下是关于 systemd 日志维护的全面指南。

1. 基本日志查看命令

查看完整日志

journalctl

查看特定服务的日志

journalctl -u service_name.service

查看实时日志

journalctl -f

查看特定时间段的日志

journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 12:00:00"

查看错误级别的日志

journalctl -p err

2. 日志轮转与清理

查看当前日志使用情况

journalctl --disk-usage

设置日志大小限制

编辑 /etc/systemd/journald.conf 文件:

[Journal]
SystemMaxUse=500M
RuntimeMaxUse=200M

然后重启 journald 服务:

systemctl restart systemd-journald

手动清理日志

# 保留最近2天的日志
journalctl --vacuum-time=2d

# 保留500MB的日志
journalctl --vacuum-size=500M

# 保留1000条日志条目
journalctl --vacuum-files=1000

3. 持久化日志存储

默认情况下,日志存储在 /run/log/journal 中,重启后会丢失。要永久保存:

  1. 创建存储目录:
mkdir -p /var/log/journal
  1. 设置正确的权限:
chown root:systemd-journal /var/log/journal
chmod 2755 /var/log/journal
  1. 重启 journald:
systemctl restart systemd-journald

4. 高级日志管理技巧

导出日志到文件

journalctl -u nginx.service > nginx_logs.txt

以JSON格式输出日志

journalctl -o json

查看特定进程的日志

journalctl _PID=1234

查看特定用户的日志

journalctl _UID=1000

5. 日志分析示例

查找服务启动失败原因

journalctl -u failed.service -b --no-pager | grep -i fail

分析系统启动时间

journalctl -b | grep "Startup finished in"

监控SSH登录尝试

journalctl -u sshd -f | grep "Failed password"

6. 日志转发到远程服务器

配置 /etc/systemd/journald.conf

[Journal]
ForwardToSyslog=yes

然后配置 syslog 服务(如 rsyslog)将日志转发到远程服务器。

7. 常见问题解决

日志文件损坏

rm -rf /var/log/journal/*
systemctl restart systemd-journald

日志不显示颜色

journalctl -o cat

查看详细的日志元数据

journalctl -o verbose

通过合理配置和维护 systemd 日志系统,您可以有效地监控系统运行状况,快速定位问题,并保持日志文件在可控范围内。