要让journald日志重启后不丢失,需创建/var/log/journal目录并设权限2755、配置storage=persistent、验证journalctl --disk-usage显示“in the file system”且journalctl --list-boots可见多boot记录。

要让 Journald 日志重启后不丢失、长期可用,关键不是“用 journalctl 设置”,而是让 systemd-journald 服务本身把日志写入磁盘固定位置。默认它只存内存或 /run/log/journal(重启即清空),持久化需三步到位:建目录、改配置、验效果。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
创建 /var/log/journal 目录并设对权限
systemd-journald 不会自动创建这个目录,缺了它就会静默退回易失模式。
- 运行命令创建:
sudo mkdir -p /var/log/journal - 设归属组为 systemd-journal(注意不是 system-journal 或 syslog):
sudo chown root:systemd-journal /var/log/journal - 设权限为 2755(保留 setgid 位,确保后续子目录自动继承组):
sudo chmod 2755 /var/log/journal - 更稳妥可补一句:
sudo systemd-tmpfiles --create --prefix /var/log/journal
修改 journald.conf 启用持久存储
仅建目录不够,必须明确告诉服务使用磁盘路径。
- 编辑配置文件:
sudo nano /etc/systemd/journald.conf - 找到
Storage=行,取消注释并设为:
Storage=persistent - 推荐同时开启压缩节省空间:
Compress=yes - 确保
ForwardToSyslog=no(除非你真需要转发到 rsyslog) - 保存后重启服务:
sudo systemctl restart systemd-journald
验证是否真正落盘且跨重启保留
别只看服务状态,要检查实际行为。
- 查当前日志路径和用量:
journalctl --disk-usage
输出应显示 “in the file system” 且路径含/var/log/journal - 查启动记录列表(多个 boot ID 表示历史日志已存):
journalctl --list-boots - 写一条测试日志后重启:
logger "test persistent log"
重启后再运行 journalctl -n 20 | grep "test persistent log",能查到即成功
限制磁盘占用防止撑满根分区
持久化后日志持续增长,必须设上限。在 /etc/systemd/journald.conf 的 [Journal] 小节中添加:
- SystemMaxUse=2G(总空间上限,建议 1–4G)
- SystemKeepFree=3G(强制保留空闲空间,防系统卡死)
- MaxRetentionSec=2week(最长保留 2 周)
-
SystemMaxFileSize=100M(单文件最大体积)
改完同样执行 sudo systemctl restart systemd-journald 生效。










