linux

Linux JS日志清理方法

小樊
43
2025-09-17 12:56:26
栏目: 编程语言

Linux下JS日志清理的常用方法

1. 定位JS日志文件位置

在清理前,需先确定JS日志的存储路径。常见位置包括:

2. 手动清理日志(临时解决)

清空单个日志文件

若只需清空文件内容(保留文件本身),可使用重定向到空内容的命令:
> /path/to/logfile.log
或使用truncate命令:truncate -s 0 /path/to/logfile.log(快速清空大文件)。

删除单个日志文件

若需彻底删除文件(释放磁盘空间),使用rm命令:
rm /path/to/logfile.log
注意:删除前确认文件无重要数据,避免误操作。

批量删除旧日志

通过find命令按修改时间(mtime)筛选并删除旧日志(如7天前):
find /path/to/logs -type f -name "*.log" -mtime +7 -exec rm -f {} \;

3. 使用logrotate自动化轮转与清理(推荐)

logrotate是Linux系统自带的日志管理工具,可自动完成日志轮转(分割)、压缩、删除,避免手动操作麻烦。

安装logrotate

多数发行版默认安装,未安装时使用包管理器安装:

配置logrotate

针对JS日志创建单独配置文件(如/etc/logrotate.d/js_app),内容示例如下:

/path/to/js/logs/*.log {  # 日志文件路径(支持通配符)
    daily                # 每天轮转一次
    rotate 7             # 保留最近7个轮转文件
    compress             # 压缩旧日志(如.gz格式)
    delaycompress        # 延迟压缩(当前轮转的日志不压缩,下一个周期再压缩)
    missingok            # 日志文件不存在时不报错
    notifempty           # 日志为空时不轮转
    create 0640 root adm # 创建新日志文件,权限640,属主root,属组adm
}

保存后,logrotate会根据配置自动执行(默认每天运行一次)。

手动触发logrotate

若需立即执行轮转,可使用以下命令:
sudo logrotate -vf /etc/logrotate.d/js_app

4. 使用journalctl清理systemd系统日志(针对systemd服务)

若JS应用通过systemd(如nodejs.service)运行,其日志由journalctl管理,可通过以下命令清理:

清理指定时间前的日志

例如删除2周前的日志:
sudo journalctl --vacuum-time=2weeks
或删除1GB以上的日志:
sudo journalctl --vacuum-size=1G

查看日志占用空间

sudo journalctl --disk-usage(显示当前日志占用的磁盘空间)。

5. 自动化定期清理(长期维护)

为避免日志堆积,建议通过cron定时任务定期执行清理脚本。

创建清理脚本

例如/home/user/cleanup_js_logs.sh,内容如下:

#!/bin/bash
LOG_DIR="/path/to/js/logs"  # 日志目录
DAYS_TO_KEEP=7              # 保留天数

# 查找并删除超过指定天数的日志文件
find "$LOG_DIR" -type f -name "*.log" -mtime +"$DAYS_TO_KEEP" -exec rm -f {} \;

# 可选:清空特定大日志文件(如nohup.log)
NOHUP_LOG="$LOG_DIR/nohup.log"
if [ -f "$NOHUP_LOG" ]; then
    cat /dev/null > "$NOHUP_LOG"  # 清空文件内容
    echo "$(date): $NOHUP_LOG has been truncated." >> /var/log/cleanup.log
fi

赋予脚本执行权限:chmod +x /home/user/cleanup_js_logs.sh

添加cron任务

编辑当前用户的cron表:crontab -e,添加以下行(每天凌晨1点运行):
0 1 * * * /home/user/cleanup_js_logs.sh
保存后,cron会自动执行脚本。

注意事项

0
看了该问题的人还看了