journalctl
是 systemd 提供的日志查看工具,用于查询和显示 systemd 日志(journal)中的内容。在 CentOS 7 及更高版本中,它取代了传统的 syslog
服务,成为系统日志的主要管理工具。
journalctl
journalctl -k
# 或
journalctl --dmesg
journalctl -u service_name.service
# 例如查看 sshd 服务日志
journalctl -u sshd.service
journalctl -f
# 类似于 tail -f
# 查看今天日志
journalctl --since today
# 查看指定时间范围的日志
journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 12:00:00"
# 查看最近1小时日志
journalctl --since "1 hour ago"
# 只显示错误信息
journalctl -p err
# 可用级别: emerg(0), alert(1), crit(2), err(3), warning(4), notice(5), info(6), debug(7)
# 显示完整时间戳
journalctl -o verbose
# 只显示最新的10行
journalctl -n 10
# 显示磁盘使用情况
journalctl --disk-usage
# 清理旧日志
journalctl --vacuum-size=500M
journalctl --vacuum-time=1months
journalctl _PID=1234
journalctl _UID=1000
journalctl -u nginx.service _PID=1234 --since yesterday
# 导出为文本文件
journalctl > journal.log
# 导出为二进制文件(可重新导入)
journalctl --output=export > journal.export
默认情况下,journal 日志存储在 /run/log/journal/
中,重启后会丢失。要启用持久化存储:
mkdir -p /var/log/journal
chown root:systemd-journal /var/log/journal
chmod 2755 /var/log/journal
systemctl restart systemd-journald
# 限制日志大小
vim /etc/systemd/journald.conf
# 修改以下参数:
SystemMaxUse=500M
RuntimeMaxUse=100M
# 然后重启服务
systemctl restart systemd-journald
journalctl --since "1 hour ago" --no-pager | grep -i "failed"
journalctl
是管理现代 Linux 系统日志的强大工具,熟练掌握它可以大大提高系统故障排查的效率。