Compare commits
10 Commits
dc22c62d88
...
46bfc507f2
| Author | SHA1 | Date | |
|---|---|---|---|
| 46bfc507f2 | |||
| 90bddf93e6 | |||
| d3a74d9995 | |||
| 3c9f385b55 | |||
| 6b04b7e05b | |||
| c864c91d49 | |||
| 18bd06b4e0 | |||
| c227c6a78c | |||
| a34c8270a3 | |||
| 1860ca6c42 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1 +1 @@
|
||||
.obsidian/workspace
|
||||
.obsidian/workspace.json
|
||||
274
.obsidian/workspace.json
vendored
274
.obsidian/workspace.json
vendored
@@ -1,274 +0,0 @@
|
||||
{
|
||||
"main": {
|
||||
"id": "fd76501ab5551c59",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "657c08911bbed8eb",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "2d6c71e84273c20a",
|
||||
"type": "leaf",
|
||||
"pinned": true,
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "00. Inbox/Habit Tracker.md",
|
||||
"mode": "source",
|
||||
"source": true
|
||||
},
|
||||
"pinned": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "3b4577823cedf427",
|
||||
"type": "leaf",
|
||||
"pinned": true,
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "00. Inbox/01. TODO.md",
|
||||
"mode": "source",
|
||||
"source": true
|
||||
},
|
||||
"pinned": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "069e76e47c814366",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "canvas",
|
||||
"state": {
|
||||
"file": "00. Inbox/樹莓派.canvas",
|
||||
"viewState": {
|
||||
"x": -980.811858027452,
|
||||
"y": 1437.5282478124002,
|
||||
"zoom": -0.3890515971812937
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 2
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "c03b931709aac93a",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "262a6c92848bc73a",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "f69acad103e7f817",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "bad194a4534ef74b",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "vimrc",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e41d3ba9ac328959",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "bookmarks",
|
||||
"state": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 246.49999618530273
|
||||
},
|
||||
"right": {
|
||||
"id": "bb4f1f6a5dddbb12",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "e04f7f5c2b67b828",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "71679272f2e33a87",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "00. Inbox/樹莓派.canvas",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "412b934ac56eabdb",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "quiet-outline",
|
||||
"state": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e7f5fe3d8a7d256b",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "00. Inbox/樹莓派.canvas"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "bac9d59fdcd09bd8",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "advanced-tables-toolbar",
|
||||
"state": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "61119a6658ef61a6",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "all-properties",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "d24e22dd36a5a962",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-properties",
|
||||
"state": {
|
||||
"file": "00. Inbox/樹莓派.canvas"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 3
|
||||
},
|
||||
{
|
||||
"id": "ae4bf98badbfc7ee",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "18b9707a37e1188a",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 319.5
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
"canvas:建立新畫布": false,
|
||||
"table-editor-obsidian:Advanced Tables Toolbar": false,
|
||||
"switcher:開啟快速切換": false,
|
||||
"graph:查看關聯圖": false,
|
||||
"templates:插入模板": false,
|
||||
"daily-notes:開啟今天的每日筆記": false,
|
||||
"command-palette:開啟命令面板": false,
|
||||
"markdown-importer:開啟 Markdown 格式轉換器": false,
|
||||
"random-note:開始漫遊筆記": false,
|
||||
"workspaces:管理工作區配置": false,
|
||||
"periodic-notes:Open today": false
|
||||
}
|
||||
},
|
||||
"active": "069e76e47c814366",
|
||||
"lastOpenFiles": [
|
||||
"attachments/Pasted image 20240111231507.png",
|
||||
"00. Inbox/SSIM.md",
|
||||
"00. Inbox/樹莓派.canvas",
|
||||
"05. 資料收集/Tool Setup/Software/vim.md",
|
||||
"00. Inbox/自我成長.canvas",
|
||||
"00. Inbox/[APP] 設定CPU Power mode.md",
|
||||
"00. Inbox/使用 librosa 做 FFT.md",
|
||||
"01. 個人/Datas.md",
|
||||
"05. 資料收集/讀書筆記/20240101 - 筆記的魔力.canvas",
|
||||
"02. 個人:Daily/2024-01-02(週二).md",
|
||||
"attachments/wakatime_2023_review.png",
|
||||
"02. 個人:Daily/2024-01-02(週二)——.md",
|
||||
"98. templates/日記.md",
|
||||
"attachments/wakatime_2023_weekdays.png",
|
||||
"attachments/wakatime_2023_days.png",
|
||||
"05. 資料收集/布萊茲‧帕斯卡(Blaise Pascal).md",
|
||||
"00. Inbox/Habit Tracker.md",
|
||||
"05. 資料收集/核心肌群訓練.md",
|
||||
"05. 資料收集/時間不一致性.md",
|
||||
"05. 資料收集/每週外食.md",
|
||||
"05. 資料收集/固定型心態.md",
|
||||
"05. 資料收集/Linux/CLI/cut.md",
|
||||
"05. 資料收集/Linux/CLI/scp.md",
|
||||
"05. 資料收集/Linux/Programming.md",
|
||||
"03. 個人:Travel/20230214 - 日本福岡旅遊.md",
|
||||
"00. Inbox/00. Inbox.md",
|
||||
"00. Inbox/01. TODO.md",
|
||||
"README.md",
|
||||
"00. Inbox/Project Zomboid.md",
|
||||
"02. 個人:Daily/2024-01-01(週一).md",
|
||||
"02. 個人:Daily/2023/2023年度目標.md",
|
||||
"02. 個人:Daily/2024",
|
||||
"02. 個人:Daily/2023/12/2023-12-01(週五).md",
|
||||
"02. 個人:Daily/2023/12",
|
||||
"attachments/Pasted image 20231225164717.png",
|
||||
"attachments/Pasted image 20231225164413.png",
|
||||
"attachments/Pasted image 20231225164349.png",
|
||||
"attachments/Pasted image 20231220095827.png",
|
||||
"attachments/Pasted image 20231212181946.png",
|
||||
"attachments/Pasted image 20231212181543.png",
|
||||
"attachments/Pasted image 20231212180917.png",
|
||||
"未命名 1.canvas",
|
||||
"未命名.canvas",
|
||||
"02. 個人:Daily/2023/11",
|
||||
"02. 個人:Daily/2023/10",
|
||||
"00. Inbox/vc-fwUpdate code trace(Meetup).canvas",
|
||||
"02. 個人:Daily/2023/09",
|
||||
"02. 個人:Daily/2023/08",
|
||||
"02. 個人:Daily/2023/05",
|
||||
"00. Inbox/My Mindmap.canvas",
|
||||
"05. 資料收集/Tool Setup/Software/diskstation/share/Tools/字型",
|
||||
"05. 資料收集/Tool Setup/Software/diskstation/share/Tools",
|
||||
"05. 資料收集/Tool Setup/Software/diskstation/share"
|
||||
]
|
||||
}
|
||||
12
00. Inbox/Linux/Docker.md
Normal file
12
00. Inbox/Linux/Docker.md
Normal file
@@ -0,0 +1,12 @@
|
||||
## 安裝
|
||||
根據[Install Docker Engine on Debian](https://docs.docker.com/engine/install/debian/)來安裝Docker engine。
|
||||
|
||||
## 列出可用的版本
|
||||
```bash
|
||||
# List the available versions:
|
||||
apt-cache madison docker-ce | awk '{ print $3 }'
|
||||
|
||||
5:24.0.0-1~debian.11~bullseye
|
||||
5:23.0.6-1~debian.11~bullseye
|
||||
...
|
||||
```
|
||||
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)
|
||||
4
00. Inbox/systemd.md
Normal file
4
00. Inbox/systemd.md
Normal file
@@ -0,0 +1,4 @@
|
||||
## 列出系統中的 systemd service
|
||||
```bash
|
||||
systemctl list-units --type=service
|
||||
```
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"2379c5036a2ef1af","type":"text","text":"# 設定\n## 更新與安裝\n1. `sudo apt update`\n2. `sudo apt upgrade -y`\n3. `sudo apt install dnsutils`\n\n## `raspi-config`\n1. 打開ssh與vnc\n2. 開機進入console\n\n## `~/.bashrc`\n```bash\nalias ll='ls -al'\nalias pwoff='sudo shutdown -h now'\n```","x":-60,"y":-135,"width":371,"height":315},
|
||||
{"id":"e5bba63eeea5211f","type":"text","text":"# 安裝\n1. 到[官網](https://www.raspberrypi.com/software/)下載`imager`\n2. 記得在`imager`裡面設定ssh public key","x":-440,"y":-47,"width":340,"height":140},
|
||||
{"id":"3a39140e3c8408cf","type":"text","text":"## 設定 static IP\n**用router來固定ip,以下方法沒用**\n\n1. `sudo vim /etc/dhcpcd.conf`\n2. 填入\n```\ninterface wlan0\nstatic ip_address=192.168.1.21/24\nstatic routers=192.168.1.1\nstatic domain_name_servers=168.95.192.1\n```\n3. reboot","x":-60,"y":200,"width":371,"height":280},
|
||||
{"id":"6184baf71c6585ff","type":"text","text":"## crontab\n### 加入\n使用`crontab -e`,然後加入這一行:\n`*/1 * * * * /home/awin/script/ddns.sh`\n\n### 說明\n![[Pasted image 20240111231507.png]]\n依序是 **分鐘, 小時, 日期, 月份, 星期, command**\n參數為 0-59, 0-23, 1-31, 1-21, 0-6, 需要執行的command\n**※ 星期參數為 0 代表星期日**\n\n- 【*】:星號,代表任何時刻都接受的意思\n- 【,】:逗號,代表分隔時段。例如:30 9,17 * * * command,代表早上 9 點半和下午五點半都執行 command。\n- 【-】:減號,代表一段時間範圍。例如:15 9-12 * * * command,代表從 9 點到 12 點的每個 15 分都執行 command。\n- 【/n】:斜線,n 代表數字,表示每個 n 單位間隔。例如:*/5 * * * * command,代表每隔 5 分鐘執行一次 command。\n\n■ 還有一些人性化的參數,一次取代全部五個數字參數\n- 【@reboot】 :僅在開機的時候執行一次。\n- 【@yearly】 :一年執行一次,和0 0 1 1 * command效果一樣。\n- 【@annually】:(和@yearly一樣)\n- 【@monthly】:一個月執行一次,和0 0 1 * * command效果一樣。\n- 【@weekly】:一個星期執行一次,和0 0 * * 0 command效果一樣。\n- 【@daily】:每天執行,和0 0 * * * command效果一樣。\n- 【@midnight】:(和@daily一樣)\n- 【@hourly】 :每小時執行,和0 * * * * command效果一樣。\n\n### 範例\n- 每 5 分鐘執行一次:\n - `*/5 * * * * root /usr/libexec/atrun`\n- 每 5 小時執行一次\n - `* */5 * * * root /usr/libexec/atrun`\n- 每天 AM 5:00 執行指令(星號與星號之間要有空隔)\n - `00 05 * * * username /bin/bash /路徑/command`\n- 1 至 20 號每天執行一次\n - `0 1 1-20 * * root /usr/libexec/atrun`\n- 當分針移到第 5 分時,執行此 cron\n - `5 * * * * root /usr/libexec/atrun`\n- 當時針移到 1 點 1 分時,執行此 cron\n - `1 1 * * * root /usr/libexec/atrun`\n- 每週一的 1 點 1 分,執行\n - `1 1 * * 1 root /usr/libexec/atrun`\n- 2 月 29 日時針到 1 點 1 分,執行\n - `1 1 29 2 * root /usr/libexec/atrun`\n- 8 點到 16 點每 5 分鐘執行一次 cron\n - `/5 8-16 * * * root /usr/libexec/atrun`\n\n### crontab 命令\n#### 啟動\n`sudo service cron start`\n\n#### 重新啟動\n`/etc/init.d/cron restart`\n\n#### 查詢service狀態\n`sudo /etc/init.d/cron status`\n\n#### 編輯 crontab\n`crontab -e`\n\n\n","x":-731,"y":620,"width":631,"height":430},
|
||||
{"id":"6ad2c15172b3b925","type":"text","text":"## 設定 DDNS of Cloudflare\n1. 準備`/home/awin/script/ddns.sh`\n2. 把script加入craontab\n\n","x":-60,"y":624,"width":371,"height":136},
|
||||
{"id":"89db003eaa4162c9","type":"text","text":"## `/home/awin/script/ddns.sh`\n```bash\n#!/bin/bash\nCF_ACCESS_TOKEN=033xQP4_ZpTq3sSkeftz5J6BWw_R9eoDNTba7zfH\nCF_ZONE_ID=1d6a623d1780c31544fc86f718dac16e\nURLS=('awin.one'\n 'blog.awin.one'\n 'ftp.awin.one'\n 'git.awin.one',\n 'storj.awin.one')\nCF_RECORD_IDS=('d67b2a1b3d7cd520b8e8dad2cb522460'\n '69dcc0bd619b1a3d4a71458faff2aa50'\n 'bd397d9779d42c0b92c9c9c47b765769'\n '4eccb48e85f2daa8fefeb92c8cb4b4ee'\n '216d631bc860c6a11b62e3a1003f3e3e')\n\nINTERNET_IP=`curl -s http://ipv4.icanhazip.com`\nINTERFACE_IP=`ip address show ppp0 | grep ppp0 | grep global | awk '{print$2}'`\nDNS_RECORD_IP=`dig +short \"${URLS[0]}\" | grep -Eo '([0-9]{1,3}\\.){3}[0-9]{1,3}' | awk 'NR==1{print}'`\nNOW_TIME=`date`\n\nif [ \"$INTERNET_IP\" != \"$DNS_RECORD_IP\" ]\nthen\n echo \"Renew IP: ${DNS_RECORD_IP} to ${INTERNET_IP}\"\n echo \"${NOW_TIME}: Renew IP: ${DNS_RECORD_IP} to ${INTERNET_IP}\" > /home/awin/log/ddns.log\n for ((i = 0; i < ${#URLS[@]}; i++)); do\n curl -X PUT \"https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_RECORD_IDS[$i]}\" \\\n -H \"Authorization: Bearer ${CF_ACCESS_TOKEN}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"type\":\"A\",\"name\":\"'${URLS[$i]}'\",\"content\":\"'${INTERNET_IP}'\",\"ttl\":120,\"proxied\":false}'\n done\nelse\n echo \"No change: ${INTERNET_IP}\"\n echo \"${NOW_TIME}: No change: ${INTERNET_IP}\" > /home/awin/log/ddns.log\nfi\n```\n\n### 參考\n- [5 分鐘整合 Cloudflare API 實做 Cloudflare DDNS 動態 IP 對應網址](https://blog.toright.com/posts/7333/cloudflare-ddns)\n- [自架 DDNS 教學:用 Cloudflare API 達成多域名同步更新! | by Rex | Medium](https://blog.rexyuan.com/%E7%94%A8-cloudflare-dns-api-%E4%BE%86%E9%81%94%E6%88%90-ddns-adaee3c5a84d)","x":-1660,"y":350,"width":886,"height":700},
|
||||
{"id":"84c3e0d9a25b9cfd","x":-1448,"y":1160,"width":928,"height":640,"type":"text","text":"## 看log\nRaspberry Pi 4沒有`/var/log/syslog`,要使用`journalctl`。\n```bash\njournalctl\n```\nOr \n```bash\njournalctl | grep SOMETHING\n```\n\n### 看系統訊息\n```bash\njournalctl -p 0\n```\n\n#### Error code意思\n```\n0: 紧急情况\n1: 警报\n2: 危急\n3: 错误\n4: 警告\n5: 通知\n6: 信息\n7:调试\n```\n\n### 看開機log\n```bash\njournalctl --list-boots\n```\n\n- 第一個數字顯示的是journald 的唯一的啟動追蹤號碼,你可以在下一個命令中使用它來分析該特定的啟動。\n- 第二個數字是啟動ID,你也可以在指令中指定。\n- 接下來的兩個日期、時間組合是儲存在對應文件中的日誌的時間。如果你想找出某個特定日期、時間的日誌或錯誤,這就非常方便了。\n\n例如:\n```bash\njournalctl -b -45\n```\nOr\n```bash\njournalctl -b 8bab42c7e82440f886a3f041a7c95b98\n```\n\n也可以使用 `-x` 選項,在顯示器上加入systemd 錯誤訊息的解釋。在某些情況下,這是個救命稻草。例:\n```bash\njournalctl -xb -p 3\n```"}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"f01be3b2d50be1dd","fromNode":"2379c5036a2ef1af","fromSide":"bottom","toNode":"3a39140e3c8408cf","toSide":"top"},
|
||||
{"id":"7ee9a7ffb58d8dd7","fromNode":"e5bba63eeea5211f","fromSide":"right","toNode":"2379c5036a2ef1af","toSide":"left"},
|
||||
{"id":"25b55a6eadd7d434","fromNode":"3a39140e3c8408cf","fromSide":"bottom","toNode":"6ad2c15172b3b925","toSide":"top"}
|
||||
]
|
||||
}
|
||||
22
00. Inbox/樹莓派/00. 樹莓派.canvas
Normal file
22
00. Inbox/樹莓派/00. 樹莓派.canvas
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"e94c9e71b9aeaa89","type":"group","x":440,"y":-360,"width":400,"height":900,"label":"設定"},
|
||||
{"id":"d624199752cf24de","type":"text","text":"![[更新與安裝工具]]","x":460,"y":-340,"width":360,"height":120},
|
||||
{"id":"a63a5baed201beda","type":"text","text":"![[設定日誌大小]]","x":460,"y":160,"width":360,"height":180},
|
||||
{"id":"f210470376a4829d","type":"text","text":"![[設定Cloudflare DDNS]]","x":460,"y":370,"width":360,"height":150},
|
||||
{"id":"6e59f6b9f36b24e2","type":"text","text":"![[安裝]]","x":-80,"y":-37,"width":383,"height":177},
|
||||
{"id":"bc030994aafc5a3b","type":"text","text":"![[bashrc]]","x":460,"y":-37,"width":360,"height":177},
|
||||
{"id":"6875474760fafe7c","type":"text","text":"![[raspi-config]]","x":460,"y":-200,"width":360,"height":140},
|
||||
{"id":"b77234a9cdf72aad","type":"text","text":"安裝[[00. Inbox/Linux/Docker|Docker]]","x":980,"y":-340,"width":340,"height":180},
|
||||
{"id":"d0711febf5985ed5","type":"text","text":"certbotdocker: [iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天](https://ithelp.ithome.com.tw/m/articles/10301801\n\n[JonasAlfredsson/docker-nginx-certbot: Automatically create and renew website certificates for free using the Let's Encrypt certificate authority.](https://github.com/JonasAlfredsson/docker-nginx-certbot)","x":980,"y":-130,"width":340,"height":142},
|
||||
{"id":"8cac63e48dff1f2a","type":"text","text":"Gitea: [Gitea 使用 Gmail 寄信 - 筆記ZONE](https://zonego.tw/2021/11/14/gitea-gmail/)\n","x":980,"y":80,"width":250,"height":60},
|
||||
{"id":"94fa9ef036dbe62a","x":980,"y":186,"width":409,"height":114,"type":"text","text":"Speedtest 測試\n[robinmanuelthiel/speedtest: Check internet bandwidth from a Docker container and save the results to an InfluxDB](https://github.com/robinmanuelthiel/speedtest)"}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"9683c15c63c167c0","fromNode":"6e59f6b9f36b24e2","fromSide":"right","toNode":"e94c9e71b9aeaa89","toSide":"left"},
|
||||
{"id":"af36558e6c250c94","fromNode":"d624199752cf24de","fromSide":"bottom","toNode":"6875474760fafe7c","toSide":"top"},
|
||||
{"id":"feff628bc758f1e4","fromNode":"6875474760fafe7c","fromSide":"bottom","toNode":"bc030994aafc5a3b","toSide":"top"},
|
||||
{"id":"f1a7af20d2d64873","fromNode":"bc030994aafc5a3b","fromSide":"bottom","toNode":"a63a5baed201beda","toSide":"top"},
|
||||
{"id":"64bd8b56a86d56af","fromNode":"a63a5baed201beda","fromSide":"bottom","toNode":"f210470376a4829d","toSide":"top"}
|
||||
]
|
||||
}
|
||||
5
00. Inbox/樹莓派/bashrc.md
Normal file
5
00. Inbox/樹莓派/bashrc.md
Normal file
@@ -0,0 +1,5 @@
|
||||
## `~/.bashrc`
|
||||
```bash
|
||||
alias ll='ls -al'
|
||||
alias pwoff='sudo shutdown -h now'
|
||||
```
|
||||
40
00. Inbox/樹莓派/ddns.sh.md
Normal file
40
00. Inbox/樹莓派/ddns.sh.md
Normal file
@@ -0,0 +1,40 @@
|
||||
## `/home/awin/script/ddns.sh`
|
||||
```bash
|
||||
#!/bin/bash
|
||||
CF_ACCESS_TOKEN=033xQP4_ZpTq3sSkeftz5J6BWw_R9eoDNTba7zfH
|
||||
CF_ZONE_ID=1d6a623d1780c31544fc86f718dac16e
|
||||
URLS=('awin.one'
|
||||
'blog.awin.one'
|
||||
'ftp.awin.one'
|
||||
'git.awin.one',
|
||||
'storj.awin.one')
|
||||
CF_RECORD_IDS=('d67b2a1b3d7cd520b8e8dad2cb522460'
|
||||
'69dcc0bd619b1a3d4a71458faff2aa50'
|
||||
'bd397d9779d42c0b92c9c9c47b765769'
|
||||
'4eccb48e85f2daa8fefeb92c8cb4b4ee'
|
||||
'216d631bc860c6a11b62e3a1003f3e3e')
|
||||
|
||||
INTERNET_IP=`curl -s http://ipv4.icanhazip.com`
|
||||
INTERFACE_IP=`ip address show ppp0 | grep ppp0 | grep global | awk '{print$2}'`
|
||||
DNS_RECORD_IP=`dig +short "${URLS[0]}" | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | awk 'NR==1{print}'`
|
||||
NOW_TIME=`date`
|
||||
|
||||
if [ "$INTERNET_IP" != "$DNS_RECORD_IP" ]
|
||||
then
|
||||
echo "Renew IP: ${DNS_RECORD_IP} to ${INTERNET_IP}"
|
||||
echo "${NOW_TIME}: Renew IP: ${DNS_RECORD_IP} to ${INTERNET_IP}" > /home/awin/log/ddns.log
|
||||
for ((i = 0; i < ${#URLS[@]}; i++)); do
|
||||
curl -X PUT "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_RECORD_IDS[$i]}" \
|
||||
-H "Authorization: Bearer ${CF_ACCESS_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data '{"type":"A","name":"'${URLS[$i]}'","content":"'${INTERNET_IP}'","ttl":120,"proxied":false}'
|
||||
done
|
||||
else
|
||||
echo "No change: ${INTERNET_IP}"
|
||||
echo "${NOW_TIME}: No change: ${INTERNET_IP}" > /home/awin/log/ddns.log
|
||||
fi
|
||||
```
|
||||
|
||||
### 參考
|
||||
- [5 分鐘整合 Cloudflare API 實做 Cloudflare DDNS 動態 IP 對應網址](https://blog.toright.com/posts/7333/cloudflare-ddns)
|
||||
- [自架 DDNS 教學:用 Cloudflare API 達成多域名同步更新! | by Rex | Medium](https://blog.rexyuan.com/%E7%94%A8-cloudflare-dns-api-%E4%BE%86%E9%81%94%E6%88%90-ddns-adaee3c5a84d)
|
||||
3
00. Inbox/樹莓派/raspi-config.md
Normal file
3
00. Inbox/樹莓派/raspi-config.md
Normal file
@@ -0,0 +1,3 @@
|
||||
## `raspi-config`
|
||||
1. 打開ssh與vnc
|
||||
2. 開機進入console
|
||||
5
00. Inbox/樹莓派/安裝.md
Normal file
5
00. Inbox/樹莓派/安裝.md
Normal file
@@ -0,0 +1,5 @@
|
||||
1. 到[官網](https://www.raspberrypi.com/software/)下載`imager`
|
||||
2. 記得在`imager`裡面設定
|
||||
1. ssh public key
|
||||
2. WIFI
|
||||
3. account/password
|
||||
3
00. Inbox/樹莓派/更新與安裝工具.md
Normal file
3
00. Inbox/樹莓派/更新與安裝工具.md
Normal file
@@ -0,0 +1,3 @@
|
||||
1. `sudo apt update`
|
||||
2. `sudo apt upgrade -y`
|
||||
3. `sudo apt install dnsutils`
|
||||
3
00. Inbox/樹莓派/設定Cloudflare DDNS.md
Normal file
3
00. Inbox/樹莓派/設定Cloudflare DDNS.md
Normal file
@@ -0,0 +1,3 @@
|
||||
用[[crontab]]設定[[ddns.sh]]
|
||||
1. `crontab -e`
|
||||
2. 加入 `*/15 * * * * /home/awin/script/ddns.sh`
|
||||
5
00. Inbox/樹莓派/設定日誌大小.md
Normal file
5
00. Inbox/樹莓派/設定日誌大小.md
Normal file
@@ -0,0 +1,5 @@
|
||||
打開`/etc/systemd/journald.conf`
|
||||
- `SystemMaxUse=1G`
|
||||
- `RuntimeMaxUse=100M`
|
||||
|
||||
[[journalctl]]
|
||||
Reference in New Issue
Block a user