清理systemd日志

2023-11-11

systemd journal之于systemd犹如syslog之于init,其日志文件保存在/var/log/journal目录下。随着时间的流逝,该目录下会积累大量日志文件,占用不少的磁盘空间。如果硬盘容量较小或可用空间紧张,可以考虑清理过期日志释放占用的空间。

本文介绍清理systemd日志的方法。

清理systemd日志

清理之前,可查看一下systemd日志所占用的磁盘空间。既可以用常用的 du 命令:

sudo du -sh /var/log/journal/
# 示例输出
# 3.9G /var/log/journal/

但更推荐使用systemd日志管理专用命令 journalctl

journalctl --disk-usage
# 示例输出
# Archived and active journals take up 3.9G on disk.

知道了日志占用的磁盘空间,接下来便可以清理过期日志。开始之前,建议rotate 当前日志(rotate是日志操作中的一个术语,其归档旧日志,后续日志写入新创建的日志文件中):

sudo journalctl --rotate

journalctl提供了三种清理systemd日志的方式。第一种是清理指定时间之前的日志:

# 清理7天之前的日志
sudo journalctl --vacuum-time=7d
# 清理2小时之前的日志
sudo journactl --vacuum-time=2h
# 清理10秒之前的日志
sudo journalctl --vacuum-time=10s
# 上述命令示例输出:
# Vacuuming done, freed 3.7G of archived journals on disk.

第二种是限制日志占用的空间大小:


# 限制systemd日志占用不超过1G空间
sudo journalctl --vacuum-size=1G
# 限制systemd日志占用不超过100M
sudo journalctl --vacuum-size=100M
# 输出与第一种类似

第三种是保留日志文件个数:

# 保留最近的5个日志文件
sudo journalctl --vacuum-files=5
# 输出与第一种类似

不知道journalctl管理日志功能之前,本人用过 find 配合 exec (或者管道加xargs)的土办法清理过期日志:

# 删除7天前的日志
find /var/log/journal -mtime +7 -exec rm -rf {} \;

一劳永逸的办法

返回目录
上文介绍的清理systemd日志方法适合一次性手动管理,重复做就没意思了。一劳永逸的办法是配置systemd journal,让其自动管理日志,不占用过多磁盘空间。

方法是编辑 /etc/systemd/journald.conf 文件,对其中的参数进行设置。例如限制日志最大占用1G空间:

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
SystemMaxUse=1G
#SystemKeepFree=
#SystemMaxFileSize=
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=

保存配置文件后记得重新加载:sudo systemctl restart systemd-journald

转载原文https://itlanyan.com/clear-systemd-journal-logs/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

清理systemd日志 的相关文章

  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 通过 Visual Studio 2017 使用远程调试时 Linux 控制台输出在哪里?

    我的Visual Studio 2017 VS2017 成功连接Linux系统 代码如下 include
  • 在centos中安装sqlite3 dev和其他包

    我正在尝试使用 cpanel 在 centos 机器上安装 sqlite dev 和其他库 以便能够编译应用程序 我对 debian 比 centos 更熟悉 我知道我需要的库是 libsqlite3 dev libkrb5 dev lib
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 为什么 fopen("any_path_name",'r') 不给出 NULL 作为返回值?

    在调试一些代码时 我得到如下内容 include
  • 内核的panic()函数是否完全冻结所有其他进程?

    我想确认内核的panic 功能和其他类似kernel halt and machine halt 一旦触发 保证机器完全冻结 那么 所有的内核和用户进程都被冻结了吗 是panic 可以被调度程序中断吗 中断处理程序仍然可以执行吗 用例 如果
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • 如何在 Linux 中使用 C 语言使用共享内存

    我的一个项目有点问题 我一直在试图找到一个有据可查的使用共享内存的例子fork 但没有成功 基本上情况是 当用户启动程序时 我需要在共享内存中存储两个值 当前路径这是一个char and a 文件名这也是char 根据命令参数 启动一个新进
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在
  • 如何让 Node.js 作为后台进程运行并且永不死掉?

    我通过 putty SSH 连接到 linux 服务器 我尝试将其作为后台进程运行 如下所示 node server js 然而 2 5 小时后 终端变得不活动 进程终止 即使终端断开连接 我是否也可以使进程保持活动状态 Edit 1 事实
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • python库之execjs使用方法

    一 execjs使用方法 import execjs def encrypt c1 c2 with open encrypt js encoding utf 8 as f jscode f read txt execjs compile j
  • Vmware vSphere 5.0系列教程之五 存储简介及配置openfiler存储

    转载至 http andygao blog 51cto com 323260 822152 从前面的vSwitch 我们知道 vSphere的高级功能的实现 必须通过多片物理网卡来实现 不过 这仅仅是一方面 更重要的是 我们需要独立的共享存
  • Flink学习6-自定义分区器介绍

    背景说明 我们都知道自定义source是可以自定义并行度的 数据读写有几个并行度就意味着有几个分区 那么怎么控制我想要的数据流入到指定分区呢 flink1 12官方文档给我们提供了一下几种方式 接下来我们分别进行讨论 partitionCu
  • C#开发(1) 判断字符串是否为GUID的函数

    bool IsGuid string strToValidate private bool IsGuid string strToValidate bool isGuid false string strRegexPatten 0 1 0
  • 个人收藏的网页特效应用(电脑新建一个文本文档复制粘贴改后缀名为.html就能用)

    1 樱花
  • 设置浏览器不能登录http://burp

    文章目录 前言 一 浏览器能登录http burp 二 设置 三 浏览器不能登录http burp 前言 设置浏览器不能登录http burp 一 浏览器能登录http burp 二 设置 Proxy gt Option gt Miscel
  • 【Rust日报】2023-04-05 基于 Rust 的 DNS 客户端、服务器和解析器 trust-dns

    基于 Rust 的 DNS 客户端 服务器和解析器 trust dns trust dns 的目标是构建具有现代功能的安全可靠的 DNS 服务器和客户端 仅使用安全的 Rust 构建 并通过适当的错误处理避免所有恐慌 其功能设计在一定程度上
  • Spring AOP与拦截器的区别

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 作用层面 拦截器只对action负责 作用层面一般位于Controller层 Spring AOP主要是拦截对Spring管理的Bean的访问 一般作用与Service
  • ZooKeeper基础

    目录 ZooKeeper重要概念解读 Data model 数据模型 znode 数据节点 znode 4种类型 znode数据结构 版本version ACL 权限控制 Watcher 事件监听器 会话 session ZooKeeper
  • 华为OD机试 - 计算最大乘积(Java & JS & Python)

    题目描述 给定一个元素类型为小写字符串的数组 请计算两个没有相同字符的元素长度乘积的最大值 如果没有符合条件的两个元素 返回0 输入描述 输入为一个半角逗号分隔的小写字符串的数组 2 lt 数组长度 lt 100 0 lt 字符串长度 lt
  • 小熊派BearPi-HM nano开发板 -- 编译环境搭建

    课前准备 安装教程 开发环境搭建 复杂 编译环境搭建 哔哩哔哩 bilibilihttps www bilibili com video BV1tv411b7SA p 3 vd source 3912c2f79aa8597d06f883aa
  • 自然语言处理: 第八章chatGPT的搭建

    理论基础 Transformer 大模型家族可以分成三类 至于三者的区别可以参考上一章 Encoder only Decoder only 只需要Pre train Encoder decoder 可以在一些任务上无需进行fine tune
  • 收钱吧-轻POS接口

    一次性开发 线上线下全渠道对接所有主流移动支付方式 所有请求格式均采用JSON格式 请求字符集采用UTF 8编码 1 收钱吧官方文档地址 https doc shouqianba com LitePos 2 通用请求体样式 request
  • qt中编译错误:error: C2001: 常量中有换行符的解决办法

    问题 qt中编译错误常量中有换行符 解决办法 1 打开 编辑 gt Select EnCoding 2 选择System gt 按编码保存即可 原因 因为Windows默认的GBK编码和UTF 8编码的冲突造成的 转换文件为GBK编码就行了
  • 概率机器人教学课件

    http www probabilistic robotics org
  • 信号上升沿与系统带宽的关系

    对于理想方波而言 其上升时间与带宽之间的关系是可以加以量化的 如下图所示 每个方波波形都是通过加上某几次谐波的正弦波频率分量而人为合成的 叠加的谐波分量越丰富 波形就越趋近于理想的方波 所以 如果可以获取每加入一次谐波后的合成波形上升时间
  • jetpack compose 屏幕适配

    fun Int sdp Dp val screenDp Resources getSystem displayMetrics widthPixels Resources getSystem displayMetrics density re
  • 安装pyscipopt

    安装pyscipopt Conda会自动安装SCIP 因此所有内容都可以通过单个命令安装 GitHub scipopt PySCIPOpt Python interface for the SCIP Optimization Suite c
  • Java获取类信息的三种方法+通过反射获取私有属性

    通过下面三种方法 我们可以获取到类的信息 包括类的名称 修饰符 父类 接口 字段 方法等信息 这些信息可以用于进行反射操作 例如动态创建对象 调用方法 访问字段等 通过反射可以 1 使用Class forName 方法 Class forN
  • 清理systemd日志

    systemd journal之于systemd犹如syslog之于init 其日志文件保存在 var log journal目录下 随着时间的流逝 该目录下会积累大量日志文件 占用不少的磁盘空间 如果硬盘容量较小或可用空间紧张 可以考虑清