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-usagesudo journalctl --vacuum-time=7dsudo journalctl --vacuum-size=100Myour-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/bashLOG_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.logsudo chmod +x /usr/local/bin/clean-js-logs.shcrontab -e,添加以下行(每天凌晨1点执行):0 1 * * * /usr/local/bin/clean-js-logs.sh此任务会自动记录清理日志到/var/log/clean-js-logs.log。注意事项:
logrotate和定时任务,实现“自动轮转+定期清理”的双重保障。