## 看log Raspberry Pi 4沒有`/var/log/syslog`,要使用`journalctl`。 ```bash journalctl ``` Or ```bash journalctl | grep SOMETHING ``` ### 看系統訊息 ```bash journalctl -p 0 ``` #### Error code意思 ``` 0: 紧急情况 1: 警报 2: 危急 3: 错误 4: 警告 5: 通知 6: 信息 7:调试 ``` ### 看開機log ```bash journalctl --list-boots ``` - 第一個數字顯示的是journald 的唯一的啟動追蹤號碼,你可以在下一個命令中使用它來分析該特定的啟動。 - 第二個數字是啟動ID,你也可以在指令中指定。 - 接下來的兩個日期、時間組合是儲存在對應文件中的日誌的時間。如果你想找出某個特定日期、時間的日誌或錯誤,這就非常方便了。 例如: ```bash journalctl -b -45 ``` Or ```bash journalctl -b 8bab42c7e82440f886a3f041a7c95b98 ``` 也可以使用 `-x` 選項,在顯示器上加入systemd 錯誤訊息的解釋。在某些情況下,這是個救命稻草。例: ```bash journalctl -xb -p 3 ``` ### 看某一特定時間、日期的日誌記錄 使用 `--since` 選項與 `yesterday`、`today`、`tomorrow` 或 `now` 組合。 以下是一些不同指令的範例。你可以根據你的需求修改它們。它們是不言自明的。以下命令中的日期、時間格式為 `"YYYY-MM-DD HH:MM:SS"` ```bash journalctl --since "2020-12-04 06:00:00" journalctl --since "2020-12-03" --until "2020-12-05 03:00:00" journalctl --since yesterday journalctl --since 09:00 --until "1 hour ago" ``` ### 看內核特定的記錄 ```bash journalctl -k ``` ### 過濾出某個systemd 服務單元的特定日誌 例如,如果要查看 NetworkManager 服務的日誌 ```bash journalctl -u NetworkManager.service ``` 如果不知道service name,看[[systemd#列出系統中的 systemd service]] ### 查看使用者、群組的日誌 ```bash id -u debugpoint # 先找出使用者的uid journalctl _UID=1000 --since today ``` ### 查看可執行檔的日誌 ```bash journalctl /usr/bin/gnome-shell --since today ``` ### 看log佔用的磁碟空間 ```bash journalctl --disk-usage ``` ### 清除日誌 #### 手動清除 ```bash sudo journalctl --flush --rotate # 將所有日誌歸檔 sudo journalctl --vacuum-time=7d # 只保留最近7天的日誌 sudo journalctl --vacuum-time=1s # 只保留最近1秒的日誌 ``` 或者設定日誌的大小 ```bash sudo journalctl --vacuum-size=400M # 保留最後400M ``` #### 自動清除 修改`/etc/systemd/journald.conf`,裡面有下面幾個設定項: - `SystemMaxUse`: 指定日志在持久性存储中可使用的最大磁盘空间。例:`SystemMaxUse=500M` - `SystemKeepFree`: 指定在将日志条目添加到持久性存储时,日志应留出的空间量。例:`SystemKeepFree=100M` - `SystemMaxFileSize`: 控制单个日志文件在被轮换之前在持久性存储中可以增长到多大。例:`SystemMaxFileSize=100M` - `RuntimeMaxUse`: 指定在易失性存储中可以使用的最大磁盘空间(在 /run 文件系统内)。例:`RuntimeMaxUse=100M` - `RuntimeKeepFree`: 指定将数据写入易失性存储(在 /run 文件系统内)时为其他用途预留的空间数量。例:`RuntimeMaxUse=100M` - `RuntimeMaxFileSize`: 指定单个日志文件在被轮换之前在易失性存储(在 /run 文件系统内)所能占用的空间量。例:`RuntimeMaxFileSize=200M` 修改後記得重啟 `journalctl`: ![[journalctl#重啟日誌]] 也請記得[[journalctl#確認日誌的完整性]] ### 確認日誌的完整性 ```bash journalctl --verify ``` ### 重啟日誌 若是有改變設定,記得重啟以讓變更生效: ```shell sudo systemctl restart systemd-journald ``` ### 參考 - [系統運作|如何使用journalctl 檢視和分析systemd 日誌(附實例)](https://linux.cn/article-15544-1.html)