125 lines
3.6 KiB
Markdown
125 lines
3.6 KiB
Markdown
## 看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`:
|
||
```bash
|
||
sudo systemctl restart systemd-journald
|
||
```
|
||
|
||
也請記得[[確認日誌的完整性]]
|
||
|
||
### 確認日誌的完整性
|
||
```bash
|
||
journalctl --verify
|
||
```
|
||
|
||
### 參考
|
||
- [系統運作|如何使用journalctl 檢視和分析systemd 日誌(附實例)](https://linux.cn/article-15544-1.html) |