2021-05-12 14:32:11
通過Journalctl檢視並操作Systemd紀錄檔
一、背景
每當遇到諸如網絡卡、資料庫、Apache及其他一些應用無法正常啟動時,系統會提示我們使用journalctl -ex命令進行檢視,往往能迅速找到相關紀錄檔,分析紀錄檔後問題一般能夠迅速被解決。雖然經常使用,但是也沒有過多深究。
在CentOS7.X中,systemd統一管理著所有unit的啟動紀錄檔,systemd-journald就是一個被systemd管理的進型紀錄檔管理服務,可以收集來自核心、系統早期啟動階段的紀錄檔、系統守護行程在啟動和執行中的標準輸出和錯誤資訊,還有syslog的紀錄檔。該紀錄檔服務僅僅把紀錄檔集中儲存在單一結構的紀錄檔檔案/run/log中,由於紀錄檔是經過壓縮和格式化的二進位制資料,所以在檢視和定位的時候很迅速,我們可以只用journalctl一條命令就能檢視所有紀錄檔(核心紀錄檔和 應用紀錄檔)。
[linuxidc@localhost www.linuxidc.com]$ systemctl list-units|grep journal*
systemd-journal-flush.service loaded active exited Flush Journal to Persistent Storage
systemd-journald.service loaded active running Journal Service
systemd-journald.socket loaded active running Journal Socket
對於journal的設定,我們可以參見組態檔:/etc/systemd/journald.conf,可以根據實際情況進行自定義,預設情況下並不會持久化儲存紀錄檔,只會保留一個月的紀錄檔。如果需要永久保留改紀錄檔檔案呢?
二、操作步驟
1.建立相關的目錄來存放journal紀錄檔,修改許可權,重新啟動systemd-journal服務。
[linuxidc@localhost www.linuxidc.com]$ sudo mkdir /var/log/journal
[linuxidc@localhost www.linuxidc.com]$ sudo chgrp systemd-journal /var/log/journal
[linuxidc@localhost www.linuxidc.com]$ sudo chmod g+s /var/log/journal
[linuxidc@localhost www.linuxidc.com]$ sudo systemctl restart systemd-journald
2.重新啟動數次觀察紀錄檔記錄結果。
[linuxidc@localhost www.linuxidc.com]$ journalctl --list-boots
Hint: You are currently not seeing messages from other users and the system.
Users in the 'systemd-journal' group can see all messages. Pass -q to
turn off this notice.
0 dcd3dfd0f02b4f5aa756e1dd24d0d927 一 2018-10-22 20:23:30 CST—一 2018-10-22 20:
lines 1-1/1 (END)
從上面我們可以清晰地看到本日內的一次引導記錄。
3.觀察最近一次引導過程。
[linuxidc@localhost www.linuxidc.com]$ journalctl -b 0
提示:您目前沒有看到來自其他使用者和系統的訊息。“systemd-journal”組中的使用者可以檢視所有訊息。 通過-q關閉此通知。
4.之前/run/log/journal目錄已經不存在,取而代之的是/var/log/journal目錄。
三、總結
journalctl是一個非常好用的紀錄檔檢視命令。
相關文章