Ubuntu日志管理實用技巧
journalctl是systemd提供的日志管理工具,可便捷查看、過濾和清理Systemd日志。常用命令包括:
sudo journalctl
(支持分頁查看,按q
退出);sudo journalctl -u apache2
(替換apache2
為目標服務名,如nginx
、mysql
);sudo journalctl --since "2025-10-01" --until "2025-10-07"
(按日期篩選);sudo journalctl -f
(類似tail -f
,持續顯示新日志);sudo journalctl --vacuum-time=2weeks
(刪除2周前日志)、sudo journalctl --vacuum-size=1G
(刪除超過1GB的日志)。logrotate是Ubuntu默認的日志輪轉工具,可防止日志文件過大占用磁盤空間。配置步驟如下:
/etc/logrotate.conf
(如設置daily
每日輪轉、rotate 7
保留7份、compress
壓縮舊日志);/etc/logrotate.d/
目錄下創建服務專屬配置(如/etc/logrotate.d/apache2
),內容示例:/var/log/apache2/*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root adm
}
sudo logrotate -f /etc/logrotate.conf
(強制輪轉,驗證配置是否正確)。通過降低日志級別,可減少系統和服務產生的冗余日志,提升性能。
/etc/rsyslog.conf
或/etc/rsyslog.d/50-default.conf
,將日志級別從info
改為warning
(如*.warning;auth,authpriv.none -/var/log/syslog
);avahi-daemon
)允許單獨設置日志級別,編輯/etc/avahi/avahi-daemon.conf
,將log-level=info
改為log-level=warning
,重啟服務生效。除journalctl外,還可通過以下方式清理舊日志:
sudo truncate -s 0 /var/log/syslog
(清空syslog
文件,不刪除文件本身);sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
(清空/var/log
下所有.log
文件);/etc/logrotate.conf
中的maxage
(保留天數)、size
(文件大?。┑葏翟O置自動清理規則。grep
(搜索關鍵字,如grep "error" /var/log/syslog
)、awk
(提取字段,如awk '{print $1, $3}' /var/log/syslog'
)、less
(分頁查看,如less /var/log/syslog
);日志文件包含敏感系統信息,需嚴格控制權限:
chmod 640 /var/log/syslog
(屬主root
、屬組adm
,其他用戶無寫權限);chown root:adm /var/log/syslog
(確保只有授權用戶可訪問);gpg
工具加密包含敏感信息的日志文件(如gpg -c /var/log/mysql/error.log
)。