Ubuntu系统清理JavaScript日志的常用方法
JavaScript应用的日志位置取决于部署方式和框架,常见路径包括:
/path/to/your/js/app/logs/*.log);/var/log下的syslog、auth.log,若应用将日志写入系统日志);/app/logs/*.log)。find命令快速查找:find / -type f -name "*.log" 2>/dev/null(需root权限)。若只需释放空间且保留日志文件,可使用truncate(高效清空)或重定向到空设备(/dev/null):
# 清空单个日志文件(如example.log)
sudo truncate -s 0 /path/to/example.log
# 或
sudo sh -c '> /path/to/example.log'
此方法适用于正在运行的应用,不会中断日志写入。
若日志无需保留,可直接删除(慎用,避免误删系统日志):
# 删除单个文件
sudo rm /path/to/example.log
# 批量删除7天前的.log文件(需确认路径)
find /path/to/logs -type f -name "*.log" -mtime +7 -exec rm -f {} \;
删除前建议备份重要日志:cp /path/to/logs/*.log /backup/location/。
logrotate是Ubuntu系统自带的日志管理工具,可自动完成日志的压缩、删除、轮转,避免手动操作。
/etc/logrotate.d/下新建文件(如js-app-logs):sudo nano /etc/logrotate.d/js-app-logs
/path/to/your/js/app/logs/*.log {
daily # 每天轮转
rotate 7 # 保留7个轮转文件
compress # 压缩旧日志(如.gz格式)
missingok # 日志不存在时不报错
notifempty # 日志为空时不轮转
create 0640 root adm # 新建日志文件的权限和所有者
}
sudo logrotate -d /etc/logrotate.d/js-app-logs # 模拟运行(dry-run)
sudo logrotate -f /etc/logrotate.d/js-app-logs # 强制立即执行
配置后,logrotate会按计划(默认每天)自动清理旧日志。若JavaScript应用使用systemd(如通过systemctl启动),其日志由journalctl管理,可通过以下命令清理:
journalctl --disk-usage
sudo journalctl --vacuum-time=7d
sudo journalctl --vacuum-size=100M
your-js-app.service):sudo journalctl --vacuum-service=your-js-app.service
此方法适用于系统级日志,不影响应用自身的日志文件。
为避免频繁手动操作,可通过cron定时运行清理脚本:
/usr/local/bin/clean-js-logs.sh):sudo nano /usr/local/bin/clean-js-logs.sh
内容示例(清理7天前的日志):#!/bin/bash
LOG_DIR="/path/to/your/js/app/logs"
find "$LOG_DIR" -type f -name "*.log" -mtime +7 -exec rm -f {} \;
echo "$(date): Cleaned up logs older than 7 days in $LOG_DIR" >> /var/log/clean-js-logs.log
sudo chmod +x /usr/local/bin/clean-js-logs.sh
crontab -e,添加以下行(每天凌晨1点执行):0 1 * * * /usr/local/bin/clean-js-logs.sh
此任务会自动记录清理日志到/var/log/clean-js-logs.log。注意事项:
logrotate和定时任务,实现“自动轮转+定期清理”的双重保障。