orca-shkit 指令集說明 - 虎鯨數位行銷 OrcaBiz SEO|AI SEO公司
牙醫診所全台突破7000+,了解如何佈局GEO / AIO 了解更多 牙醫小幫手WordPress專屬站內預約外掛 了解更多

orca-shkit 指令集說明

990 瀏覽
2026-09-13 更新

這份文件整理 Git、WordPress、Monitoring 與 Server 的日常指令。指令均由 orca-shkit dispatcher 呼叫 scripts/ 底下的腳本。

同步到虎鯨官網的文章,連結orca-wp-cli 虎鯨助手執行 https://orca-biz.com/manual/orca-shkit-cmd

快速查表

# 更新單站主題與 orca-* 外掛
orca-shkit-git git-pull-app-theme example example.com

# 依 domains_wp_plugins.json 預覽單站外掛更新
orca-shkit-wordpress update-wp-plugins --site example.com --dry-run

# 本機查最近 15 分鐘哪站疑似被打
orca-shkit-monitoring find-ddos-logs -m 15 -n 30 --cf-only

# 檢查單站公開首頁 5xx,不發 Slack
orca-shkit-monitoring cron-watchdog-homepage --domain example.com --dry-run

# 預覽 root crontab 變更
orca-shkit-server refresh-orca-crontab --user root

# 預覽哪些站台需要關閉 WP_DEBUG
orca-shkit-wordpress disable-wp-debug

# 預覽全站既有 debug.log 與預計釋放容量
orca-shkit-server clear-wordpress-debug-logs

# 重啟 PHP-FPM、檢查 socket 並 reload Nginx
orca-shkit-server restart-php-fpm

# 依 domains_wp_plugins.json 批次更新外掛
sudo orca-shkit-wordpress update-wp-plugins

# 中斷後從指定站續跑(包含該站)
sudo orca-shkit-wordpress update-wp-plugins --start-from example.com

# 預覽 Nginx 主設定與四份相依 conf 部署
sudo orca-shkit-server deploy-nginx-conf --dry-run

執行入口

Cloud 主機已安裝全域 symlink 時:

orca-shkit-git list
orca-shkit-wordpress list
orca-shkit-monitoring list
orca-shkit-server list

Mac 本機或 repo 內測試時:

cd /Library/WebServer/Documents/orca_shkit

./orca-shkit categories
./orca-shkit git list
./orca-shkit wordpress list
./orca-shkit monitoring list
./orca-shkit server list

全域指令是指向 repo 內 orca-shkit 的 symlink。現有 scripts/<module>/ 裡新增或修改 .sh 後通常無需重新安裝;只有 symlink 不存在、指錯 repo、更換 bin dir 或新增公開 module 時才重跑:

cd /home/orca/orca_shkit
sudo ./orca-shkit install /usr/local/bin
ls -l /usr/local/bin/orca-shkit*

Git

Git 模組會對正式站的 theme/plugin repository 執行 pull,目前沒有 dry-run。先確認站台、branch 與 dirty worktree,優先從單站開始。

更新單站的單一外掛

orca-shkit-git git-pull-app-plugin \
  APP_NAME \
  example.com \
  orca-example

APP_NAME 是現有腳本保留的第一參數;日常使用可與外掛名稱相同:

orca-shkit-git git-pull-app-plugin \
  example \
  example.com \
  orca-example

可選擇在 pull 後清除 WP Rocket 快取或 reload PHP-FPM:

orca-shkit-git git-pull-app-plugin \
  example \
  example.com \
  orca-example \
  --clear-cache \
  --reload-php-fpm

更新單站主題與全部 orca-* 外掛

orca-shkit-git git-pull-app-theme \
  example \
  example.com

第一參數是主題目錄名稱,第二參數可用 domain 或完整 WordPress 路徑:

orca-shkit-git git-pull-app-theme \
  example \
  example.com \
  --clear-cache \
  --reload-php-fpm

這支會更新指定主題、站內所有 orca-* Git 外掛、刷新 rewrite,並執行首頁健康檢查。

更新 WooPlus 外掛組

orca-shkit-git git-pull-app-wooplus-plugin \
  wooplus \
  example.com

目前包含:

  • orca-wooplus
  • orca-wooplus-gateway
  • orca-wooplus-subscription

全主機批次更新

orca-shkit-git git-pull-apps-theme

如果要連帶清快取與 reload PHP-FPM:

orca-shkit-git git-pull-apps-theme \
  --clear-cache \
  --reload-php-fpm

這支會掃描 /home/wwwroot 並更新全部站台,沒有 dry-run。應先用 git-pull-app-theme 測單站。

WordPress

依 JSON 更新外掛與續跑

統一使用 update-wp-plugins,掃描 /home/wwwroot 第一層站台。正式主機需有 wpjqcurlunzip;腳本會以站台目錄擁有者執行 WP-CLI。

先建立本次更新清單;domains_wp_plugins.json 已加入 .gitignore,每台主機自行維護。檔案已存在時不要覆蓋原設定:

cd /home/orca/orca_shkit
cp -n domains_wp_plugins.example.json domains_wp_plugins.json
vi domains_wp_plugins.json

清單範例:

{
  "*": ["seo-by-rank-math"],
  "example.com": ["elementor", "wp-rocket"],
  "skip.example.com": []
}

Key 必須是站台資料夾名稱,不含 https:// 或路徑。* 是可選的全站共用清單;單站清單完全覆蓋 *,不會合併,空陣列表示略過該站。若只要更新指定幾站,省略 * 即可。scripts/wordpress/sites_ignore.json 的外掛排除規則在全站、單站與續跑模式都會生效。

先 dry-run 單站:

sudo orca-shkit-wordpress update-wp-plugins \
  --site example.com \
  --dry-run

Dry-run 全站:

sudo orca-shkit-wordpress update-wp-plugins \
  --dry-run

正式更新單站:

sudo orca-shkit-wordpress update-wp-plugins \
  --site example.com

依清單正式全站更新:

sudo orca-shkit-wordpress update-wp-plugins

中斷後從指定站續跑(包含起點;別名 --resume-from):

sudo orca-shkit-wordpress update-wp-plugins --start-from example.com --dry-run
sudo orca-shkit-wordpress update-wp-plugins --start-from example.com

常用選項:

  • --config FILE:使用另一份 JSON 清單。
  • --source-root DIR:站台根目錄(預設 /home/wwwroot,只掃描第一層)。
  • --archive-dir DIR:共用 ZIP 目錄(預設 /home/orca/wp_plugins)。
  • --start-from SITE:略過起點之前的資料夾,不可與 --site 同用;找不到起點會報錯。
  • --backup-dir DIR:DB 備份根目錄(預設 /root)。
  • --no-slack:不送出最後的失敗摘要。
  • --no-db-backup:關閉正式更新前的 DB 備份,不建議。

--dry-run 不下載 ZIP、不修改外掛或備份 DB;WP-CLI 載入 WordPress 時仍可能刷新更新資訊快取。確認單站預覽後,先正式更新單站,再預覽及執行全站。

預設更新到各站外掛更新來源回報的最新版,從 update_versionupdate_package 取得版本及下載網址。共用 ZIP 存在 /home/orca/wp_plugins/<slug>-<version>.zip,相同版本已有有效 ZIP 就直接重用,沒有才下載;付費外掛需有有效更新來源,或先放入對應版本 ZIP。只更新已安裝外掛,保留原本啟用/停用狀態。

正式更新每站首次變更前備份一次 DB 到 /root/backupdb-YYYYMMDD/backup-<site>-<時間>-<PID>.sql,備份失敗則不更新該站。WP Rocket 原本啟用時先停用並驗證,更新後恢復;安裝失敗也會嘗試恢復啟用。每項更新後讀回版本與狀態;啟用中的外掛另做公開首頁檢查,HTTP 500–599 才會呼叫 restart_php_fpm.sh 並重測。

续跑按站台資料夾的掃描順序開始,包含起點站,不會自動儲存進度。已完成的外掛會重新查詢更新資訊,沒有新版就略過。--start-from--resume-from 都只接受資料夾名稱,不接受完整路徑。

外掛更新失敗後處理

每輪最後會顯示更新、略過、下載/重用、失敗項目與去重後的失敗站台數;正式執行有失敗時,將站台與原因彙整成一則 Slack #server告警--dry-run--no-slack 不發通知。

空目錄、WordPress 核心不完整或 wp-content/plugins 為空的資料夾會提示並略過,不列為失敗。清單未建立會顯示建立方式並結束;未設定清單、清單中的站台資料夾不存在、外掛未安裝時也會提示。

若顯示「無法讀取外掛清單」,先確認站台檔案與 DB 連線;DB 備份失敗先處理連線、權限或容量。首頁檢查無法取得 HTTP 狀態、PHP-FPM 重啟失敗或重測仍為 5xx,會列入失敗。修復原因後,先單站預覽及重試:

sudo orca-shkit-wordpress update-wp-plugins --site coolhealth.com.tw --dry-run
sudo orca-shkit-wordpress update-wp-plugins --site coolhealth.com.tw

# 若整批中斷,再從該站接續後面的站台
sudo orca-shkit-wordpress update-wp-plugins --start-from coolhealth.com.tw --dry-run
sudo orca-shkit-wordpress update-wp-plugins --start-from coolhealth.com.tw

退出碼:0 完成/預覽成功、1 更新/備份/站台讀取或健康檢查失敗、2 設定或環境錯誤。腳本不會自動還原 DB;若已更新成功但首頁檢查失敗,重跑可能因已是最新版而略過該外掛,須另用首頁 watchdog 驗證恢復:

orca-shkit-monitoring cron-watchdog-homepage --domain coolhealth.com.tw --dry-run

update-plugin-all-sites 只顯示遷移提示,不再更新;須調整既有排程。新指令只更新已安裝外掛並保留狀態,不支援舊 --zip、安裝缺少外掛或自動啟用。若強制終止留下 .update-wp-plugins.lock,須先確認沒有執行中的批次,再移除共用 ZIP 目錄下的殘留鎖。

WordPress Core 與全站維護更新

這支沒有 dry-run,必須先測單站:

sudo orca-shkit-wordpress upgrade-wp-vers \
  --site example.com

預設 Core 只升 minor。需要跨主版或指定版本時:

sudo orca-shkit-wordpress upgrade-wp-vers \
  --site example.com \
  --major-core

sudo orca-shkit-wordpress upgrade-wp-vers \
  --site example.com \
  --core-version 7.0.1

全站中斷後續跑:

sudo orca-shkit-wordpress upgrade-wp-vers \
  --start-from example.com

這支會更新 Core、DB、外掛、主題、權限與快取,並 reload PHP-FPM、檢查首頁、發 Slack。Log 位於 /var/log/updateall_<timestamp>.txt

媒體使用量

# 全站 incremental
orca-shkit-wordpress update-media-usaged-all-sites \
  --mode=incremental

安全權限、WP_DEBUG 與 debug.log

# 更新站台權限(會互動詢問站台資料夾名稱)
sudo orca-shkit-wordpress update-secure-permission

先關閉 WordPress debug 模式,避免站台繼續寫入新的除錯訊息。預設只會 dry-run:

# 預覽所有站台的 WP_DEBUG 狀態
orca-shkit-wordpress disable-wp-debug

# 只預覽 jeken.com.tw
orca-shkit-wordpress disable-wp-debug \
  --site jeken.com.tw

# 完整預檢通過後,將所有站台設為布林值 WP_DEBUG=false
sudo orca-shkit-wordpress disable-wp-debug \
  --apply

# 只套用 jeken.com.tw
sudo orca-shkit-wordpress disable-wp-debug \
  --site jeken.com.tw \
  --apply

disable-wp-debug 只處理 /home/wwwroot 第一層且同時具有 wp-config.phpwp-content 的 WordPress 專案。套用前會完整預檢並備份待修改檔案到 /var/backups/orca-shkit/wp-debug-<時間>/;修改後會檢查 PHP 語法、讀回布林值 false,並確認權限與擁有者沒有改變。重複定義、符號連結或無法安全解析時整批不寫入;途中失敗會從本次備份回復已處理站台。

確認 debug 模式已關閉後,再清空既有 wp-content/debug.log。這支同樣預設只會 dry-run:

# 預覽全站 debug.log、檔案大小與預計釋放容量
orca-shkit-server clear-wordpress-debug-logs

# 只預覽 jeken.com.tw
orca-shkit-server clear-wordpress-debug-logs \
  --site jeken.com.tw

# 清空全站既有 debug.log
sudo orca-shkit-server clear-wordpress-debug-logs \
  --apply

# 只清空 jeken.com.tw
sudo orca-shkit-server clear-wordpress-debug-logs \
  --site jeken.com.tw \
  --apply

clear-wordpress-debug-logs 只掃描 /home/wwwroot/*/wp-content/debug.log,以原檔截斷方式清空內容,不使用刪除再重建,因此會保留檔案、inode、權限與擁有者。更深層同名檔、符號連結及非一般檔案不會處理。這與 Nginx/主機輪轉 log 不同;後者請使用 Server 模組的 clean-orca-logs

update-secure-permission 目前不接受 domain 參數,會在執行中互動詢問。WP_DEBUG=false 與清空 debug.log 是兩個獨立動作:前者停止 WordPress debug 模式,後者只釋放既有檔案內容。

Monitoring

本機掃描 Cloudflare:哪個站被打

cd /Library/WebServer/Documents/orca_shkit

./orca-shkit monitoring find-ddos-logs \
  -m 15 \
  -n 30 \
  -p 10 \
  --cf-only

這是只讀 Cloudflare Analytics,可在 Mac 本機執行。輸出 H/M/L、PageReq、Peak15、Top IP/path、403、499/5xx 與 origin-bound 請求。

單站詳細分析:

./orca-shkit monitoring find-ddos-logs \
  -s example.com \
  -m 30 \
  -n 50 \
  --cf-only

Cloud 主機上加入 origin log 交叉比對:

orca-shkit-monitoring find-ddos-logs \
  -m 15 \
  -n 30 \
  --with-local

orca-shkit-monitoring find-malicious-requests \
  -d /home/wwwlogs \
  -s example.com \
  -t 30 \
  -w 120 \
  -v

Cloudflare 是 edge 聚合資料,不是 origin 即時 log。攻擊判斷應同時看 domain、path、IP、User-Agent、403/499/5xx 與 Nginx/PHP-FPM 狀態。

公開首頁 5xx Watchdog

單站 dry-run,不發 Slack:

orca-shkit-monitoring cron-watchdog-homepage \
  --domain example.com \
  --dry-run

全站只掃描、不發 Slack:

orca-shkit-monitoring cron-watchdog-homepage --no-slack

正式掃描,有 HTTP 500–599 時同一輪彙整成一則 Slack:

orca-shkit-monitoring cron-watchdog-homepage

每個請求都會加上 orca_cache=<時間>-<亂數>-<序號> 並使用瀏覽器型 User-Agent。HTTP 000、DNS 或 timeout 只會警告,不發 Slack。

WordPress Core 版本掃描

# 只列出低於 6.8.2 的站台
orca-shkit-monitoring check-wp-core-versions 6.8.2

# 顯示所有站台
orca-shkit-monitoring check-wp-core-versions 6.8.2 --all

# 單站
orca-shkit-monitoring check-wp-core-versions \
  6.8.2 \
  --site example.com

Exit code:0 全部符合、1 找到過舊站台、2 參數或環境失敗。

WordPress cache 容量

# 全站快速統計
orca-shkit-monitoring check-wp-cache-usage --fast

# 單站並顯示最大的 20 個項目
orca-shkit-monitoring check-wp-cache-usage \
  --site example.com \
  --top 20

這支只讀取容量,不會刪除 cache。

PHP-FPM、Nginx 與全站服務 Watchdog

先 dry-run:

sudo orca-shkit-monitoring cron-watchdog-services \
  --all \
  --dry-run

只監測與蒐證,不 restart:

sudo orca-shkit-monitoring cron-watchdog-services \
  --all \
  --no-restart

正式模式可在達到門檻後重啟 PHP-FPM 並發 Slack:

sudo orca-shkit-monitoring cron-watchdog-services --all

Server

部署 Nginx 主設定與相依 conf

在 Cloud 主機的 repo 內執行,先預覽:

cd /home/orca/orca_shkit
sudo orca-shkit-server deploy-nginx-conf --dry-run

確認後備份並複製到 /usr/local/nginx/conf/

sudo orca-shkit-server deploy-nginx-conf --apply

部署清單共五份:nginx.conforca-logformat.conforca-cloudflare.conforca-headers.conforca-security-firewall.conforca-block-ips.conf 未被主設定引用,不在部署清單。

既有主設定會先備份成 /usr/local/nginx/conf/nginx.conf.back-YYYYMMDD-HHMMSS,其他既有目標 conf 也使用相同時間備份。複製前先檢查目前設定;寫入後再執行 nginx -t,失敗會回復本次部署的檔案。預覽只檢查目前設定,不會備份或複製。

脚本不會自動 reload。部署成功後確認測試結果,再套用到執行中的 Nginx:

sudo /usr/local/nginx/sbin/nginx -t
sudo systemctl reload nginx
systemctl is-active nginx

最後用單站首頁 watchdog 驗證。自訂路徑可用 --source-dir DIR--dest-dir DIR--nginx-bin PATH,所有路徑與參數先用 --dry-run 核對。

預覽與刷新 ORCA crontab

預設只預覽 diff:

sudo orca-shkit-server refresh-orca-crontab \
  --user root

確認預覽後套用:

sudo orca-shkit-server refresh-orca-crontab \
  --user root \
  --apply

sudo crontab -u root -l

寫入前會備份舊 crontab 到 /var/backups/orca-shkit/,只替換 ORCA SHKIT managed block,不應刪除其他排程。

重啟 PHP-FPM

sudo orca-shkit-server restart-php-fpm

指定 socket 或不 reload Nginx:

sudo orca-shkit-server restart-php-fpm \
  --expect-socket /tmp/php-cgi.sock \
  --wait 10

sudo orca-shkit-server restart-php-fpm \
  --no-nginx-reload

預設會 restart PHP-FPM、等待 socket、執行 nginx -t,然後 reload Nginx。

SSL 憑證檢查

# 查到期日
sudo orca-shkit-server ssl-valid-date example.com

# 驗證 fullchain
sudo orca-shkit-server ssl-verify example.com

這兩支會讀取 /etc/letsencrypt/live/<domain>/,需在擁有憑證檔的主機上執行。

清理 ORCA 與 Nginx 舊 log

# 先預覽超過 30 天的 log 與 ORCA 備份
sudo orca-shkit-server clean-orca-logs --dry-run

# 套用預設 30 天保留期限
sudo orca-shkit-server clean-orca-logs

# 改為保留 60 天
sudo orca-shkit-server clean-orca-logs --days 60

預設保留 30 天,會刪除 /var/log/home/wwwlogs 裡過期的輪轉 log/gzip,不刪除正在寫入的主 .log 檔。也會清除 /var/backups/orca-shkit/ 下超過期限的 wp-debug-*vhost-error-logs-* 目錄與 crontab-*.bak 檔案;不會碰 /var/backups/ 內其他系統備份或名稱不符的項目。

服務讀回驗證

執行 server 變更後,至少檢查:

systemctl is-active php-fpm
systemctl is-active nginx
nginx -t
ls -l /tmp/php-cgi.sock

再用首頁 watchdog 測單站:

orca-shkit-monitoring cron-watchdog-homepage \
  --domain example.com \
  --dry-run

操作原則

  • 先單站、再全站;有 dry-run 就先 dry-run。
  • 「檢查」不等於授權 Git pull、WordPress 更新、PHP-FPM restart 或 crontab apply。
  • cron-watchdog-cpucron-watchdog-services、Slack、Cloudflare WAF/purge 都可能有外部副作用。
  • repo 修改、commit、push、Cloud 主機 pull/deploy、全域 symlink install 與 crontab apply 是不同階段。
  • 回報時分開交代執行環境、目標、命令、讀回結果與尚未部署的階段。

▧ 文章分類

▧ 熱門文章

✦ 虎鯨 OrcaBiz SEO 優化專業團隊 ✦

幫助你將流量累積成看得見的業績,成為長期有效的最強業務!

Picture of OrcaBiz SEO 顧問
OrcaBiz SEO 顧問

虎鯨數位行銷 OrcaBiz 是台灣具備十年以上 SEO 優化經驗的公司,服務單位包含上市櫃公司、B2B 跨境外銷及中小企業,團隊成員包含技術型 Technical SEO、文案型 Content SEO,讓你在執行 SEO 上能完整擁有自己的數位資產,獲得品牌拓展最堅實的後援團隊!

SEO 專欄
SEO