vault backup: 2024-01-12 13:01:20
This commit is contained in:
59
00. Inbox/Linux/crontab.md
Normal file
59
00. Inbox/Linux/crontab.md
Normal file
@@ -0,0 +1,59 @@
|
||||
### 加入
|
||||
使用`crontab -e`,然後加入這一行:
|
||||
`*/1 * * * * /home/awin/script/ddns.sh`
|
||||
|
||||
### 說明
|
||||
![[Pasted image 20240111231507.png]]
|
||||
依序是 **分鐘, 小時, 日期, 月份, 星期, command**
|
||||
參數為 0-59, 0-23, 1-31, 1-21, 0-6, 需要執行的command
|
||||
**※ 星期參數為 0 代表星期日**
|
||||
|
||||
- 【*】:星號,代表任何時刻都接受的意思
|
||||
- 【,】:逗號,代表分隔時段。例如:30 9,17 * * * command,代表早上 9 點半和下午五點半都執行 command。
|
||||
- 【-】:減號,代表一段時間範圍。例如:15 9-12 * * * command,代表從 9 點到 12 點的每個 15 分都執行 command。
|
||||
- 【/n】:斜線,n 代表數字,表示每個 n 單位間隔。例如:*/5 * * * * command,代表每隔 5 分鐘執行一次 command。
|
||||
|
||||
還有一些人性化的參數,一次取代全部五個數字參數
|
||||
- 【@reboot】 :僅在開機的時候執行一次。
|
||||
- 【@yearly】 :一年執行一次,和0 0 1 1 * command效果一樣。
|
||||
- 【@annually】:(和@yearly一樣)
|
||||
- 【@monthly】:一個月執行一次,和0 0 1 * * command效果一樣。
|
||||
- 【@weekly】:一個星期執行一次,和0 0 * * 0 command效果一樣。
|
||||
- 【@daily】:每天執行,和0 0 * * * command效果一樣。
|
||||
- 【@midnight】:(和@daily一樣)
|
||||
- 【@hourly】 :每小時執行,和0 * * * * command效果一樣。
|
||||
|
||||
### 範例
|
||||
- 每 5 分鐘執行一次:
|
||||
- `*/5 * * * * root /usr/libexec/atrun`
|
||||
- 每 5 小時執行一次
|
||||
- `* */5 * * * root /usr/libexec/atrun`
|
||||
- 每天 AM 5:00 執行指令(星號與星號之間要有空隔)
|
||||
- `00 05 * * * username /bin/bash /路徑/command`
|
||||
- 1 至 20 號每天執行一次
|
||||
- `0 1 1-20 * * root /usr/libexec/atrun`
|
||||
- 當分針移到第 5 分時,執行此 cron
|
||||
- `5 * * * * root /usr/libexec/atrun`
|
||||
- 當時針移到 1 點 1 分時,執行此 cron
|
||||
- `1 1 * * * root /usr/libexec/atrun`
|
||||
- 每週一的 1 點 1 分,執行
|
||||
- `1 1 * * 1 root /usr/libexec/atrun`
|
||||
- 2 月 29 日時針到 1 點 1 分,執行
|
||||
- `1 1 29 2 * root /usr/libexec/atrun`
|
||||
- 8 點到 16 點每 5 分鐘執行一次 cron
|
||||
- `/5 8-16 * * * root /usr/libexec/atrun`
|
||||
|
||||
### crontab 命令
|
||||
#### 啟動
|
||||
`sudo service cron start`
|
||||
|
||||
#### 重新啟動
|
||||
`/etc/init.d/cron restart`
|
||||
|
||||
#### 查詢service狀態
|
||||
`sudo /etc/init.d/cron status`
|
||||
|
||||
#### 編輯 crontab
|
||||
`crontab -e`
|
||||
|
||||
|
||||
125
00. Inbox/Linux/journalctl.md
Normal file
125
00. Inbox/Linux/journalctl.md
Normal file
@@ -0,0 +1,125 @@
|
||||
## 看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)
|
||||
Reference in New Issue
Block a user