/ 分享 / 110 浏览

如何限制liunx服务器systemd日志大小到100M

执行下面的命令一次设置好(中途需要输入 Y 继续);如果要改其他大小,改下面的SystemMaxUse=100M为你想要的日志大小就行:

#!/bin/bash

echo "=== 限制systemd日志大小到100M ==="
echo ""

# 显示当前日志占用
echo "当前systemd日志占用:"
journalctl --disk-usage

echo ""
echo "日志文件位置占用:"
du -sh /var/log/journal/ 2>/dev/null || echo "使用内存模式"

echo ""
read -p "是否继续配置日志限制?(y/N): " confirm

if [[ $confirm != [yY] ]]; then
    echo "已取消操作"
    exit 0
fi

# 备份原配置文件
echo "备份原配置文件..."
cp /etc/systemd/journald.conf /etc/systemd/journald.conf.backup

# 创建新的配置
echo "配置日志限制..."
cat > /etc/systemd/journald.conf << 'EOF'
[Journal]
# 限制总日志大小为100M
SystemMaxUse=100M
# 限制单个日志文件大小为10M
SystemMaxFileSize=10M
# 保留时间7天
MaxRetentionSec=7d
# 启用压缩
Compress=yes
# 限制运行时日志大小为50M
RuntimeMaxUse=50M
# 日志存储到磁盘
Storage=persistent
# 转发到syslog
ForwardToSyslog=no
EOF

# 重启journald服务
echo "重启systemd-journald服务..."
systemctl restart systemd-journald

# 清理现有超大日志
echo "清理现有超大日志..."
journalctl --vacuum-size=100M
journalctl --vacuum-time=7d

echo ""
echo "配置完成!"

# 显示配置后状态
echo "配置后日志占用:"
journalctl --disk-usage

echo ""
echo "配置详情:"
echo "- 总日志大小限制: 100M"
echo "- 单文件大小限制: 10M"  
echo "- 保留时间: 7天"
echo "- 压缩: 启用"
echo "- 运行时日志: 50M"

echo ""
echo "如需恢复原配置,运行:"
echo "cp /etc/systemd/journald.conf.backup /etc/systemd/journald.conf"
echo "systemctl restart systemd-journald"

其他限制系统日志的方法:

方法一:停止并禁用 rsyslog 服务

这个方法包含两个步骤的命令:一个是立即停止当前正在运行的服务,另一个是禁止它开机自启。推荐将它们一起执行。

命令 (建议完整复制并执行):

sudo systemctl stop rsyslog && sudo systemctl disable rsyslog
  • sudo systemctl stop rsyslog: 这个命令会立即停止 rsyslog 服务。
  • sudo systemctl disable rsyslog: 这个命令会阻止 rsyslog 服务在系统下次启动时自动运行。
  • &&: 这是一个逻辑操作符,表示只有当第一个命令(stop)成功执行后,才会执行第二个命令(disable)。

方法二:配置 journald 不存储日志

这个方法也包含两个步骤:修改配置文件,然后重启服务使新配置生效。

第一步:修改配置文件

您可以使用 sed 命令来自动修改配置文件。这个命令会找到 #Storage=auto 这一行(#号代表该行为注释),去掉注释符#并将其值修改为 none

命令:

sudo sed -i 's/#*Storage=auto/Storage=none/' /etc/systemd/journald.conf

注意:这里我使用了 #* 来匹配 Storage=auto 前面可能有或没有 # 号的情况,这样即使您之前修改过,命令也能正常工作。

第二步:重启 journald 服务

修改配置后,需要重启 systemd-journald 服务来应用新的设置。

命令:

sudo systemctl restart systemd-journald


方法三(谨慎):将 /var/log 权限设置为 400

作用:Linux权限 400 意味着只有文件的所有者(通常是 root 用户)拥有读取权限,没有任何人(包括所有者)有写入或执行的权限。

  • /var/log 目录的权限设为 400,意味着系统中的任何进程(即便是以 root 身份运行的进程)都无法再向这个目录中写入任何新文件或向现有文件追加内容。

对VPS的影响

  • 优点:效果立竿见影,能强制性地阻止几乎所有日志写入该目录,从而控制硬盘空间占用。
  • 缺点/风险
    • 过于粗暴:这种方法非常“暴力”。它不仅阻止了日志写入,还可能导致依赖于在 /var/log 子目录中创建或写入文件的应用程序或服务失败。某些程序在无法写入其预期的日志文件时可能会崩溃或无法启动。
    • 可能引发其他错误:系统或应用程序在尝试写入日志失败时,可能会不断地尝试重试,这本身也可能消耗一定的CPU资源。错误信息可能会被输出到其他地方,或者干脆丢失。
    • ac01 的含义未知:您提到的 “ac01” 并不是一个标准的Linux权限或属性设置。这可能是您特定环境下的一个别名或是一个误写。标准的权限设置是使用数字(如 400)或符号(如 r-- --- ---)表示的。如果它是一个特定的ACL(访问控制列表)或chattr属性,需要具体分析其作用。但仅从权限 400 来看,风险已经很大。
解决独角数卡在纯IPv6环境下 Gmail SMTP 无法发送邮件的问题(WARP出口方案)
解决独角数卡在纯IPv6环境下 Gmail SMTP 无法发送邮件的问题(WARP出口方案)
新到手的vps必须设置的几个重要设置
新到手的vps必须设置的几个重要设置
摩尔多瓦Moldtelecom Prepaid eSIM 一年保号仅需0.8RMB
摩尔多瓦Moldtelecom Prepaid eSIM 一年保号仅需0.8RMB
Typecho默认的文章地址带有index.php,怎么去掉
Typecho默认的文章地址带有index.php,怎么去掉
购买VPS后必须要做的4件事情,很重要!
购买VPS后必须要做的4件事情,很重要!
独角数卡安装出问题:发生错误undefined、此路由不支持 POST 方法
独角数卡安装出问题:发生错误undefined、此路由不支持 POST 方法

0

  1. 此文章暂无评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注