CentOS系統中有兩個日志服務,分別是傳統的 rsyslog 和 systemd-journal
- systemd-journald是一個改進型日志管理服務,可以收集來自內核、系統早期啟動階段的日志、系統守護進程在啟動和運行中的標准輸出和錯誤信息,還有syslog的日志。
該日志服務僅僅把日志集中保存在單一結構的日志文件/run/log中,由於日志是經歷過壓縮和格式化的二進制數據,所以在查看和定位的時候很迅速。
默認情況下並不會持久化保存日志,只會保留一個月的日志。另外,一些rsyslog無法收集的日志也會被journal記錄到。
- rsyslog作為傳統的系統日志服務,把所有收集到的日志都記錄到/var/log/目錄下的各個日志文件中。
- 常見的日志文件如下:
- /var/log/messages 絕大多數的系統日志都記錄到該文件
- /var/log/secure 所有跟安全和認證授權等日志都會記錄到此文件
- /var/log/maillog 郵件服務的日志
- /var/log/cron crond計划任務的日志
- /var/log/boot.log 系統啟動的相關日志
查看文件占用大小 du -hm --max-depth=1 -h
找到占用最大的文件 進入繼續執行該指令
Linux到底有沒有占用空間的垃圾文件,這個看如何判定了,例如好幾年前、幾個月前的日志文件、系統文件,基本沒什么用處,算垃圾文件嗎?
ls -lhm --full-time /var/log/journal/f9d400c5e1e8c3a8209e990d887d4ac1_bk_20190122/ | sort -k6 | head -n30
查看垃圾文件的方法
未清理前發現硬盤根分區空間告急,用 du -t 100M /var
或journalctl --disk-usage
命令查看,發現/var/log/journal日志文件占用了近3G空間,每個日志文件體積高達8-128M,這些日志文件記錄了很長時間以來的systemd情況,毫無價值,用journalctl --vacuum-size=10M
命令將其清理之后,騰出了2.7G的空間。用df命令一查,/根分區果然寬敞了很多。
查看某個目錄的文件大小並排序(單位為MB)
du -hm --max-depth=1 /var/ | sort -n
或者查看該目錄下文件夾 du -h --max-depth=1
查看文件大小 du -ah
清空 /var/log/journal 文件的方法
1、用echo命令,將空字符串內容重定向到指定文件中
echo "" > system.journal
說明:此方法只會清空一次,一段時間后還要再次手動清空很麻煩,這里可以用以下命令讓journalctl 自動維護空間
2、journalctl 命令自動維護文件大小
1)只保留近一周的日志
journalctl --vacuum-time=1w
2)只保留500MB的日志
journalctl --vacuum-size=500M
3)直接刪除 /var/log/journal/ 目錄下的日志文件
rm -rf /var/log/journal/f9d400c5e1e8c3a8209e990d887d4ac1
問題與分析解決
執行 journalctl 命令時報錯:Error was encountered while opening journal files: Input/output error
journalctl --vacuum-time=1w
Error was encountered while opening journal files: Input/output error
問題分析:日志文件損壞
解決方法:刪除之前的日志,並重啟 journalctl 服務
mv journal/f9d400c5e1e8c3a8209e990d887d4ac1 journal/f9d400c5e1e8c3a8209e990d887d4ac1_bk_20190122
systemctl restart systemd-journald.service
查看 /var/log/journal/ 日志目錄如下:
然后,再執行 journalctl 限制日志的命令:
journalctl --vacuum-time=1w
Vacuuming done, freed 0B of archived journals on disk.
journalctl --vacuum-size=500M
Vacuuming done, freed 0B of archived journals on disk.
權限問題
一般 tomcat 需要切換 tomcat 用戶
sudo su tomcat
退出用戶
exit
或 ctrl+d
切換root 用戶
sodu su - root
linux ls 按文件大小排序
ls -Sl
其是按照由大到小排序,如果想要反過來,從小到大,那么用:
ls -Slr
再者,如果想要輸入是按照“便於人類閱讀的方式”,那么就再加一個-h,表示"--human-readable"
這樣單位就是k或者M ,比較容易看清楚結果