📜  清除 systemd 日志 (1)

📅  最后修改于: 2023-12-03 15:11:07.932000             🧑  作者: Mango

清除 systemd 日志

在 Linux 操作系统中,systemd 负责管理多个系统组件和管理日志的记录。在长时间使用系统后,系统的日志可能会非常庞大,占用大量磁盘空间。因此,我们需要定期清理日志。下面介绍如何在 systemd 中清除日志。

1. 查看当前日志大小

使用以下命令查看当前日志大小:

journalctl --disk-usage

输出会显示当前磁盘上的日志大小和可用空间。

2. 清除所有日志

如果你想要立即清除所有的日志,可以使用以下命令:

sudo journalctl --rotate && sudo journalctl --vacuum-time=1s
  • --rotate 选项将当前的日志轮换到一个新的文件。
  • --vacuum-time=1s 选项表示只保留最近一秒钟的日志,其余的都会被删除。你也可以使用其他值,如 --vacuum-time=1d 表示只保留最近一天的日志。
3. 清除特定单位的日志

如果你只想清除某个特定 service 或者 unit 的日志,可以使用以下命令:

sudo journalctl --unit=unit_name --vacuum-time=1s

其中 unit_name 为你想要清除日志的 service 或者 unit 的名字。

4. 自动清除日志

如果你想要自动定期清除系统日志,可以设置一个 systemd timer。例如,以下脚本会在每周的星期天清除所有的日志:

  1. 创建文件 /etc/systemd/system/logrotate.timer,写入以下内容:
[Unit]
Description=Clear systemd journal logs on a weekly basis

[Timer]
OnCalendar=Sun *-*-* 00:00:00
RandomizedDelaySec=1day
Persistent=true

[Install]
WantedBy=timers.target
  1. 创建文件 /etc/systemd/system/logrotate.service,写入以下内容:
[Service]
Type=oneshot
ExecStart=/usr/bin/journalctl --rotate && /usr/bin/journalctl --vacuum-time=1s
  1. 运行下面的命令启用 timer:
sudo systemctl enable logrotate.timer
sudo systemctl start logrotate.timer
总结

此文介绍了如何在 systemd 中清除日志,包括清除所有日志,清除特定单位的日志和自动清除日志。如果你的系统日志占用了太多的磁盘空间,不要忘记按照本文的方法清理日志哦!