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
和定時任務,實現“自動輪轉+定期清理”的雙重保障。