Mac
- 【Mac】清除dns快取
- 【Mac】brew 切換php版本
- 【Quicktime】影片合併分割
- 【Mac】保持不休眠語法
- 【 Mac】安裝netdata
- 【zsh】如何設定快捷鍵
- 【Mac】設定路由
- 【Mac】使用自簽憑證
- 【Mac】固定網卡mac
- 【Mac】指令開關wifi - lan
- 【Mac】查詢dns
- 【除錯】【Mac】crontab 無法正常執行
- 【Mac】mac 顯示隱藏檔案
【Mac】清除dns快取
| MACOS VERSION | COMMAND |
|---|---|
| macOS 12 (Monterey) | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder |
| macOS 11 (Big Sur) | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder |
| macOS 10.15 (Catalina) | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder |
| macOS 10.14 (Mojave) | sudo killall -HUP mDNSResponder |
| macOS 10.13 (High Sierra) | sudo killall -HUP mDNSResponder |
| macOS 10.12 (Sierra) | sudo killall -HUP mDNSResponder |
| OS X 10.11 (El Capitan) | sudo killall -HUP mDNSResponder |
| OS X 10.10 (Yosemite) | sudo discoveryutil udnsflushcaches |
| OS X 10.9 (Mavericks) | sudo killall -HUP mDNSResponder |
| OS X 10.8 (Mountain Lion) | sudo killall -HUP mDNSResponder |
| Mac OS X 10.7 (Lion) | sudo killall -HUP mDNSResponder |
| Mac OS X 10.6 (Snow Leopard) | sudo dscacheutil -flushcache |
| Mac OS X 10.5 (Leopard) | sudo lookupd -flushcache |
| Mac OS X 10.4 (Tiger) | lookupd -flushcache |
【Mac】brew 切換php版本
brew 安裝 特定 php 版本
#brew install php@{php version}
brew install php@7.3
brew 切換 php 版本
查詢目前版本
#-v 查詢版本
php -v
PHP 7.3.33 (cli) (built: Nov 24 2021 13:40:29) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.33, Copyright (c) 1999-2018, by Zend Technologies
切換版本
# 刪除php7.3 (連結,非相關檔案)
brew unlink php@7.3
# 連結php7.4
brew link php@7.4
如果有安裝zsh 要編輯.zshrc
#vim .zshrc
export PATH=/usr/local/opt/php@7.4/bin:$PATH
export PATH=/usr/local/opt/php@7.4/sbin:$PATH
【Quicktime】影片合併分割
超簡單!在 Mac 電腦裁切、分割、合併多段影片(Quicktime) – 重灌狂人 (briian.com)
【Mac】保持不休眠語法
終端機執行 caffeinate,直到中斷(Ctrl + c)之前不會休眠
caffeinate
#-t 秒數 保持喚醒時間
caffeinate -t 3600
【 Mac】安裝netdata
$ brew update
$ brew install netdata
$ brew services start netdata
# prometheus 格式
http://10.80.84.9:19999/api/v1/allmetrics?format=prometheus
【zsh】如何設定快捷鍵
編輯登入執行檔
vim ~/.zshrc
# 加上你要設定的alias
alias ll="ls -alF"
重新載入或是關掉終端機再開
. ~/.zshrc
# 或是
source ~/.zshrc
【Mac】設定路由
添加路由
要添加一個新的靜態路由,你可以使用以下命令:
sudo route -n add -net [目標網段] [網關IP]
[目標網段]:你要添加的路由的目標網段。例如,192.168.1.0/24。[網關IP]:通往該目標網段的網關 IP 地址。
示例:
sudo route -n add -net 192.168.1.0/24 192.168.1.1
這會將到達 192.168.1.0/24 的流量路由到網關 192.168.1.1。
刪除路由
要刪除一個已存在的路由,你可以使用以下命令:
sudo route -n delete -net [目標網段]
示例:
sudo route -n delete -net 192.168.1.0/24
這會刪除到達 192.168.1.0/24 的路由。
查看路由表
要查看當前的路由表,你可以使用:
netstat -nr
或者
route -n get default
這會列出當前所有的路由信息,包括網關、目標網段和路由標誌。
注意事項
- 使用
sudo是必要的,因為更改網絡配置需要管理員權限。 - 添加的靜態路由通常不會在重啟後保留。如果需要持久化的路由設置,通常需要編輯網絡配置文件或使用網絡管理工具。
- 小心配置路由,以避免網絡連接問題。
【Mac】使用自簽憑證
產生憑證
在要放置自簽憑證資料夾
openssl req -x509 -out localhost.crt -keyout localhost.key -days 365 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' -extensions EXT -config <( printf "[dn] \nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
openssl req -x509 -out localhost.crt -keyout localhost.key -days 365 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' -extensions EXT -config <( printf "[dn] \nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
產生憑證檔跟key
localhost.crt
localhost.key
你可以使用 macOS 的 Keychain Access(鑰匙圈存取) 工具將 localhost.crt 憑證加入系統的信任憑證清單中。以下是詳細步驟:
【方法一】用 Terminal 安裝憑證到「系統」鑰匙圈
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain localhost.crt
參數說明:
-
-d:代表這是一個用來信任的憑證(不是用來簽署的憑證)。 -
-r trustRoot:將憑證標記為信任根(Trust Root)。 -
-k /Library/Keychains/System.keychain:安裝到系統層級的鑰匙圈(需要sudo權限)。 -
localhost.crt:你生成的憑證檔案。
【方法二】手動用 GUI 加入(若你想看圖形介面)
-
開啟 「鑰匙圈存取」 (
Keychain Access) -
選擇左上角「系統」鑰匙圈
-
拖曳
localhost.crt到右邊的憑證清單中 -
右鍵點選剛剛新增的
localhost憑證 → 點選「取得資訊」 -
展開「信任」區塊
-
將「使用此憑證時」設為「永遠信任」
-
關閉視窗時,系統會要求你輸入管理員密碼以儲存變更
🧪 驗證是否已信任憑證
你可以使用以下方式確認憑證是否信任:
security verify-cert -c localhost.crt
或是直接在瀏覽器打開 https://localhost,若沒有「不受信任」或「警告」的訊息,就代表成功。
【Mac】固定網卡mac
隨機化 MAC (Private Address, Random MAC)
-
從 macOS Big Sur 開始,Wi-Fi 預設會啟用 隨機 MAC 功能,連接某些 SSID 時,系統會產生一個虛擬的 MAC,而不是用真實硬體的 MAC。
-
目的:避免被網路追蹤。
-
你會看到同一台 Mac 連不同 Wi-Fi,MAC 會不一樣。
【Mac】指令開關wifi - lan
vim ~/.zshrc
# networksetup -listallhardwareports 查詢介面
export ETH_IF="en0" # 實體網卡
export WIFI_IF="en1" # Wi-Fi
net_to_wifi() {
sudo ifconfig "$ETH_IF" down
sudo networksetup -setairportpower "$WIFI_IF" on
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
}
net_to_lan() {
sudo ifconfig "$ETH_IF" up
sudo networksetup -setairportpower "$WIFI_IF" off
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
}
alias towifi='net_to_wifi'
alias tolan='net_to_lan'
source ./zshrc
【Mac】查詢dns
scutil --dns
在 mac 上要看「目前正在用哪幾個 DNS」,最準的是看系統實際套用到每個網路介面的設定(Wi-Fi / 有線可能不同)。你可以用下面幾種方式:
1) GUI 方式(最直覺)
-
系統設定 → 網路
-
選你正在用的介面(例如 Wi-Fi 或 乙太網路)
-
點 詳細資訊 / 進階 → DNS
-
你會看到 DNS 伺服器清單(目前套用的)
這裡顯示的是你手動填的 + DHCP 下發的(視版本介面不同)
2) CLI 方式(最準,直接看目前介面)
看整台 Mac 所有網路服務的 DNS(推薦)
scutil --dns
你會看到多組 resolver #,裡面有 nameserver[0] : x.x.x.x
通常 優先看 order 最小、以及 if_index 對應你正在用的介面那組。
只看某個網路服務(例如 Wi-Fi / Ethernet)
先列出網路服務名稱:
networksetup -listallnetworkservices
再看某個服務的 DNS(例如 Wi-Fi):
networksetup -getdnsservers "Wi-Fi"
乙太網路則可能叫:
networksetup -getdnsservers "Ethernet"
3) 快速判斷「目前預設走哪個介面」
route get default | grep interface
會回傳像 interface: en0(通常 en0 可能是有線或 Wi-Fi,依機型/設定而定)
【除錯】【Mac】crontab 無法正常執行
在 macOS 環境下,crontab 沒執行的原因通常與 Linux 大不相同,最常見的元凶是 macOS 嚴格的隱私權與安全性限制(TCC),其次是排程時間定義或環境變數路徑問題。
以下是排查 macOS Crontab 沒有執行(或執行失敗)的精準步驟:
原因一:macOS 系統權限封鎖(最常見原因)
從 macOS Mojave (10.14) 開始,系統引入了 TCC 隱私保護。cron 程式預設沒有權限讀取使用者的家目錄(如 /Users/srou/shell/...)。當排程時間到了,cron 試圖去讀取腳本時,會直接被系統阻擋(Permission denied),而且這種阻擋不會寫入您的自訂 log 中。
🛠️ 解決步驟:
-
打開 Mac 的 「系統設定」 (System Settings)。
-
進入 「隱私權與安全性」 (Privacy & Security) -> 「全權硬碟存取權」 (Full Disk Access)。
-
檢查清單中是否有
cron。 -
如果沒有(通常預設沒有):
-
點擊下方的 「+」 號。
-
按下
Command + Shift + G彈出路徑輸入框。 -
輸入
/usr/sbin/cron並點選開啟。
-
-
將
cron的開關切換為開啟(允許)狀態。
原因二:Crontab 時間格式設定不符合預期
您的設定為:
*/5 * * * 1-5 /Users/AAA/shell/clean_mangodb.sh 2025-02-20
-
*/5:每 5 分鐘執行一次。 -
1-5:週一至週五(Monday to Friday)。 -
今天是 2026 年 5 月 19 日(星期二),時間符合週一至週五。
-
排查點:請確認您測試當下的時間是否在週一至週五。如果是週末測試,它確實不會觸發。
原因三:沒有擷取錯誤輸出,導致失敗卻看不到
目前您的 clean_mangodb.sh 這一行沒有加上錯誤重導向。如果腳本在啟動時就因為路徑或權限問題掛掉,您完全無法得知原因。
🛠️ 解決步驟:
請修改 crontab,將標準錯誤輸出(stderr)導向暫存檔:
-
輸入
crontab -e -
將該行修改為(加上
>> /tmp/clean.log 2>&1):*/5 * * * 1-5 /Users/AAA/shell/clean_mangodb.sh 2025-02-20 >> /tmp/clean.log 2>&1 -
儲存離開後,靜待下一個 5 分鐘,然後查看
/tmp/clean.log的內容。
原因四:macOS cron 服務未啟動
雖然 macOS 預設會啟動 cron,但有時可能被關閉。macOS 負責管理後台服務的是 launchd。
🛠️ 檢查與重啟步驟:
檢查 cron 是否在運行:
sudo launchctl list | grep cron
如果沒有輸出,或是您想強制重載 cron 服務,請執行:
# 停止服務
sudo launchctl unload /System/Library/LaunchDaemons/com.vix.cron.plist 2>/dev/null
# 重新啟動服務
sudo launchctl load /System/Library/LaunchDaemons/com.vix.cron.plist
原因五:環境變數(PATH)問題
cron 執行時的環境變數非常乾淨,通常 PATH 只有 /usr/bin:/bin。
如果您的 clean_mangodb.sh 腳本內容中呼叫了某些透過 Homebrew 安裝的工具(雖然您目前主要使用 curl、sed,這些在 /usr/bin 都有),但若腳本有用到 /usr/local/bin 或 /opt/homebrew/bin 的套件,就會噴出 command not found。
-
驗證方式:透過上述原因三加上
2>&1導出 log 後,最容易看出來是否卡在找不到指令。
📋 建議排查順序
-
先去 全權硬碟存取權 補上
/usr/sbin/cron的權限(90% 是這個問題)。 -
用
crontab -e把日誌重導向>> /tmp/clean.log 2>&1補上。 -
檢查
/tmp/clean.log的報錯訊息。
【Mac】mac 顯示隱藏檔案
.)開頭的目錄或檔案預設為隱藏。顯示或存取 ~/.ssh 目錄主要有以下兩種方式:方法一:使用 Finder(圖形介面 GUI)
做法 A:直接前往特定路徑(最快速)
-
開啟 Finder。
-
按下快速鍵
Command + Shift + G(或點選上方選單列的「前往」>「前往資料夾...」)。 -
在輸入框中輸入
~/.ssh並按 Enter,Finder 會直接開啟該目錄。
做法 B:全域顯示隱藏檔案與資料夾
-
開啟 Finder 並前往你的家目錄(
~)。 -
按下快速鍵
Command + Shift + .(句點鍵)。 -
系統會立即切換顯示/隱藏狀態,此時即可看到灰半透明顯示的
.ssh資料夾。(再次按下相同的快速鍵組合即可恢復隱藏)
方法二:使用 Terminal(終端機 CLI)
-
列出目錄內所有檔案(包含權限與隱藏檔案):
Bashls -la ~/.ssh -
從終端機直接在 Finder 視窗中開啟該目錄:
Bashopen ~/.ssh
安全提示:~/.ssh內通常存放 SSH Private Key(私鑰)與授權設定。請確保該目錄權限設定為700(chmod 700 ~/.ssh),且私鑰檔案(如id_ed25519或id_rsa)權限為600(chmod 600 ~/.ssh/id_ed25519),以符合 SSH 協定的安全限制。