Files
Obsidian-Main/00. Inbox/Linux/journalctl.md

129 lines
3.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 看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#重啟日誌]]
也請記得[[確認日誌的完整性]]
### 確認日誌的完整性
```bash
journalctl --verify
```
### 重啟日誌
若是有改變設定,記得重啟以讓變更生效:
```shell
sudo systemctl restart systemd-journald
```
### 參考
- [系統運作|如何使用journalctl 檢視和分析systemd 日誌(附實例)](https://linux.cn/article-15544-1.html)