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]

示例:

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

這會列出當前所有的路由信息,包括網關、目標網段和路由標誌。

注意事項

【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

參數說明:


【方法二】手動用 GUI 加入(若你想看圖形介面)

  1. 開啟 「鑰匙圈存取」 (Keychain Access)

  2. 選擇左上角「系統」鑰匙圈

  3. 拖曳 localhost.crt 到右邊的憑證清單中

  4. 右鍵點選剛剛新增的 localhost 憑證 → 點選「取得資訊」

  5. 展開「信任」區塊

  6. 將「使用此憑證時」設為「永遠信任」

  7. 關閉視窗時,系統會要求你輸入管理員密碼以儲存變更


🧪 驗證是否已信任憑證

你可以使用以下方式確認憑證是否信任:

security verify-cert -c localhost.crt

或是直接在瀏覽器打開 https://localhost,若沒有「不受信任」或「警告」的訊息,就代表成功。

 

【Mac】固定網卡mac

隨機化 MAC (Private Address, Random MAC)

 

image-1757485342036.png

image-1757484944440.png

【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 方式(最直覺)

  1. 系統設定 → 網路

  2. 選你正在用的介面(例如 Wi-Fi 或 乙太網路)

  3. 點 詳細資訊 / 進階 → DNS

  4. 你會看到 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 中。

🛠️ 解決步驟:

  1. 打開 Mac 的 「系統設定」 (System Settings)。

  2. 進入 「隱私權與安全性」 (Privacy & Security) -> 「全權硬碟存取權」 (Full Disk Access)。

  3. 檢查清單中是否有 cron。

  4. 如果沒有(通常預設沒有):

    • 點擊下方的 「+」 號。

    • 按下 Command + Shift + G 彈出路徑輸入框。

    • 輸入 /usr/sbin/cron 並點選開啟。

  5. 將 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)導向暫存檔:

  1. 輸入 crontab -e

  2. 將該行修改為(加上 >> /tmp/clean.log 2>&1):

    */5 * * * 1-5 /Users/AAA/shell/clean_mangodb.sh 2025-02-20 >> /tmp/clean.log 2>&1
    
  3. 儲存離開後,靜待下一個 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 後,最容易看出來是否卡在找不到指令。

📋 建議排查順序

  1. 先去 全權硬碟存取權 補上 /usr/sbin/cron 的權限(90% 是這個問題)。

  2. 用 crontab -e 把日誌重導向 >> /tmp/clean.log 2>&1 補上。

  3. 檢查 /tmp/clean.log 的報錯訊息。

【Mac】mac 顯示隱藏檔案

在 macOS 中,以點(.)開頭的目錄或檔案預設為隱藏。顯示或存取 ~/.ssh 目錄主要有以下兩種方式:

方法一:使用 Finder(圖形介面 GUI)

做法 A:直接前往特定路徑(最快速)

  1. 開啟 Finder。

  2. 按下快速鍵 Command + Shift + G(或點選上方選單列的「前往」>「前往資料夾...」)。

  3. 在輸入框中輸入 ~/.ssh 並按 Enter,Finder 會直接開啟該目錄。

做法 B:全域顯示隱藏檔案與資料夾

  1. 開啟 Finder 並前往你的家目錄(~)。

  2. 按下快速鍵 Command + Shift + .(句點鍵)。

  3. 系統會立即切換顯示/隱藏狀態,此時即可看到灰半透明顯示的 .ssh 資料夾。
    (再次按下相同的快速鍵組合即可恢復隱藏)

方法二:使用 Terminal(終端機 CLI)

若偏好在命令列介面檢視或操作,可開啟「終端機(Terminal)」執行以下指令:

安全提示:~/.ssh 內通常存放 SSH Private Key(私鑰)與授權設定。請確保該目錄權限設定為 700 (chmod 700 ~/.ssh),且私鑰檔案(如 id_ed25519 或 id_rsa)權限為 600 (chmod 600 ~/.ssh/id_ed25519),以符合 SSH 協定的安全限制。