linux /var/log/syslog过大问题及解决 Systemd定时器用于清除

发布于:2025-02-26 ⋅ 阅读:(12) ⋅ 点赞:(0)

1 检查大小

bash ls -lh /var/log/syslog检查大小

bash sudo truncate -s 0 /var/log/syslog清空

2. Systemd定时器用于定时清除/var/log/syslog

1.清除脚本

#!/bin/bash

# 设置文件路径
LOG_FILE="/var/log/syslog"
MAX_SIZE=1073741824  # 1GB = 1073741824 字节

# 获取文件大小
FILE_SIZE=$(stat --format=%s "$LOG_FILE")

# 如果文件大小超过1GB
if [ "$FILE_SIZE" -gt "$MAX_SIZE" ]; then
    # 清空日志文件
    sudo truncate -s 0 "$LOG_FILE"
    echo "clear $LOG_FILE, MAX_SIZE > 1GB"
fi

2.创建服务文件

sudo vi /etc/systemd/system/clear-syslog.service
[Unit]
Description=Clear syslog if it exceeds 1GB

[Service]
Type=oneshot
ExecStart=/home/ido/chenFan/clear_syslog.sh

3.创建定时任务

sudo vi /etc/systemd/system/clear-syslog.timer
[Unit]
Description=Run clear-syslog.service daily

[Timer]
#OnCalendar=*:*:00
OnCalendar=daily
Unit=clear-syslog.service

[Install]
WantedBy=timers.target

OnCalendar=daily 表示每天执行一次。如果需要更频繁的执行,可以使用类似 OnCalendar=hourly 或者设置自定义的时间格式(例如,OnCalendar=--* 00:00:00 每天午夜)。
Unit=clear-syslog.service 表示该定时任务将触发 clear-syslog.service 服务单元。

3. 重新加载 systemd 配置并启动定时器

sudo systemctl daemon-reload
sudo systemctl enable clear-syslog.timer
sudo systemctl start clear-syslog.timer

4. 检查定时器状态

sudo systemctl status clear-syslog.timer
sudo systemctl list-timers

5. 测试

sudo dd if=/dev/urandom of=/var/log/syslog bs=1M count=1024     这个命令会从/dev/urandom生成随机数据并将其写入/var/log/syslog,总量为1GB