命令列工具 servbayctl
servbayctl 是 ServBay 提供的一個功能強大的命令列工具,專為開發者設計,可直接在終端機中管理 ServBay 後台服務。透過 servbayctl,你可以方便地執行啟動、停止、重載、重啟、強制結束、查看狀態以及停止所有服務等操作,這對於自動化腳本、快速切換服務狀態或偏好指令列的開發者而言,特別實用。
本文將詳細介紹 servbayctl 的用法、支援的命令、參數及服務種類。
概述
ServBay 除了提供直覺的圖形使用者介面(GUI)以管理本機 Web 開發環境,還內建 servbayctl 命令列介面(CLI)工具。servbayctl 位於 ServBay 安裝目錄下的 script 資料夾中,讓你可透過簡單的指令,控制 ServBay 所安裝的各式套件的後台服務狀態。
使用 servbayctl 的優點包括:
- 自動化: 可輕鬆將服務管理整合到開發流程或腳本。
- 效率: 不需開啟 GUI,就能快速啟動或停止指定服務。
- 彈性: 適用於遠端 SSH 連線或無頭環境。
- 精確控制: 可指定特定服務或版本進行操作。
前置條件
在使用 servbayctl 前,請確認:
你已經成功安裝 ServBay。
你具有終端機存取權限。
(建議,選用)為了方便操作,可將
/Applications/ServBay/script目錄加入系統 PATH 環境變數,這樣就能在任意路徑直接執行servbayctl,而不必輸入完整路徑。對於 Bash 或 Zsh 使用者,可編輯
~/.bash_profile、~/.bashrc、~/.zshrc或~/.profile檔案,加入以下內容:bashexport PATH="/Applications/ServBay/script:$PATH"1儲存檔案後,執行
source ~/.bash_profile(或你所修改的檔案),或重啟終端機使設定生效。
使用語法
servbayctl 基本指令格式如下:
bash
servbayctl <command> <service> [parameters]1
<command>:你想執行的操作(如start、stop、restart等)。<service>:欲管理的服務名稱(如php、mysql、caddy)。[parameters]:選用參數,用於指定服務版本或範圍(如7.4或-all)。
根據 ServBay 提供的 servbayctl 使用說明,支援的命令及語法結構如下:
Usage: /Applications/ServBay/script/servbayctl {start|stop|reload|restart|kill|status|stop-all} {php|mariadb|mysql|postgresql|redis|memcached|caddy|nginx|apache|dnsmasq|mongodb|rabbitmq|cloudflared|frpc|mailpit|web|ollama} [-all|version]1
注意:stop-all 命令不需要指定服務名稱或參數,它會停止所有 ServBay 管理的服務。
支援命令詳細說明
以下列出 servbayctl 支援的主要命令、說明與範例:
start - 啟動服務
啟動指定服務,可指定特定版本或使用 -all 啟動所有已安裝版本。
bash
servbayctl start <service> [-all|version]1
- 範例:啟動 PHP 8.1 服務bash
servbayctl start php 8.11 - 範例:啟動所有已安裝 PHP 版本bash
servbayctl start php -all1 - 範例:啟動預設設定之 MySQL 服務bash
servbayctl start mysql1
stop - 停止服務
停止指定服務,可指定特定版本或採用 -all 停止所有版本。
bash
servbayctl stop <service> [-all|version]1
- 範例:停止 PHP 7.4 服務bash
servbayctl stop php 7.41 - 範例:停止所有已安裝 MariaDB 版本bash
servbayctl stop mariadb -all1 - 範例:停止 Redis 服務bash
servbayctl stop redis1
reload - 重載服務設定
重載指定服務的設定,通常修改服務設定檔後可直接套用,不需完全重啟(並非所有服務均支援熱重載)。
bash
servbayctl reload <service> [-all|version]1
- 範例:重載 Caddy Web 伺服器的設定bash
servbayctl reload caddy1 - 範例:重載所有 PHP 版本的設定(如支援)bash
servbayctl reload php -all1
restart - 重新啟動服務
重啟指定服務,等同於停止後再啟動。
bash
servbayctl restart <service> [-all|version]1
- 範例:重啟 PostgreSQL 資料庫服務bash
servbayctl restart pgsql1 - 範例:重啟所有已安裝的 Redis 版本(如裝有多個版本)bash
servbayctl restart redis -all1
kill - 強制結束服務進程
強制終止指定服務進程。此動作較具風險,應謹慎使用,可能導致資料遺失或損毀(尤其資料庫服務)。適合服務無法正常停止時。
bash
servbayctl kill <service> [-all|version]1
- 範例:強制結束 PHP 7.4 服務進程bash
servbayctl kill php 7.41 - 範例:強制結束所有 Memcached 進程bash
servbayctl kill memcached -all1
status - 查詢服務狀態
查詢指定服務目前是否運行中。
bash
servbayctl status <service> [-all|version]1
- 範例:查詢 Caddy 服務狀態bash
servbayctl status caddy1 - 範例:查詢所有已安裝的 MySQL 版本狀態bash
servbayctl status mysql -all1
stop-all - 停止所有 ServBay 服務
一次停止所有由 ServBay 管理並在運行中的後台服務,屬於全域命令,不支援服務名稱或版本參數。
bash
servbayctl stop-all1
- 範例:停止所有 ServBay 後台服務bash
servbayctl stop-all1
支援服務列表
根據 servbayctl 使用說明,目前可直接控制下列類型之後台服務:
php:管理多版本 PHP-FPM 進程mariadb:MariaDB 資料庫服務mysql:MySQL 資料庫服務postgresql:PostgreSQL 資料庫服務redis:Redis 快取/資料庫服務memcached:Memcached 快取服務caddy:Caddy Web 伺服器nginx:Nginx Web 伺服器apache:Apache HTTP 伺服器dnsmasq:ServBay 內建 DNS 服務mongodb:MongoDB 資料庫rabbitmq:RabbitMQ 訊息佇列服務cloudflared:Cloudflare Tunnel 服務(如已安裝設定)frpc:Fatedier/frp 用戶端服務(如已安裝設定)mailpit:Mailpit 郵件攔截服務web:Web 服務(實際指涉視你的應用而定,例如活躍中的網站伺服器或 ServBay 相關 Web 介面)ollama:Ollama 本地大語言模型服務
請注意,servbayctl 現已支援直接管理包括 Nginx 與 Apache 在內的多種核心後台服務。雖然 ServBay 亦支援多種其他開發相關套件(如 Java、Python、Go、.NET、Ruby、Rust 等),但這些通常不以守護程式身分運作,因此不由 servbayctl 直接控管,而需以終端機或各自的方式啟用。servbayctl 專注於管理上列能夠以核心後台進程形式運行的服務。
常見應用範例
以下是 servbayctl 的幾個典型應用情境:
快速切換 PHP 版本進行測試:
bashservbayctl stop php -all servbayctl start php 8.21
2重啟資料庫服務,套用配置調整:
bash# 假設你已修改 my.cnf 或 my.ini servbayctl restart mysql1
2系統關機前或 ServBay 升級前,確保全面停止服務:
bashservbayctl stop-all1檢查 Web 伺服器運作狀態:
bashservbayctl status caddy1用腳本自動化啟動開發環境:
bash#!/bin/bash echo "Stopping all ServBay services..." servbayctl stop-all echo "Starting required services..." servbayctl start php 8.1 servbayctl start mysql servbayctl start caddy servbayctl start redis echo "ServBay services started."1
2
3
4
5
6
7
8
9
10
11
12
使用注意事項與最佳實踐
- 加入 PATH 建議: 強烈建議將
servbayctl路徑加入系統 PATH,簡化打指令流程。 - 謹慎使用
kill:kill會強制終止進程,可能造成資料遺失或狀態異常,除非無法正常停止,否則優先用stop或restart。 stop-all為全域指令: 該指令會停止所有 ServBay 管理的後台服務,務必確認當下確有需要執行。- 版本參數: 使用
version參數時,請確認指定版本已於 ServBay 安裝且支援,可在 ServBay GUI 查閱安裝狀況。 - 錯誤追蹤: 命令若有錯誤,通常會回傳錯誤訊息至終端,你可根據提示排查,或檢查 ServBay 安裝目錄下
logs目錄以獲取更完整詳細資訊。 - GUI 與 CLI 可搭配使用:
servbayctl為 GUI 的補充工具。進行複雜設定或總覽時,GUI 仍為最便捷選擇。
常見問答集(FAQ)
Q: 執行 servbayctl 發生 command not found 怎麼辦?
A: 這通常表示 /Applications/ServBay/script 路徑尚未加入 PATH,請依「前置條件」段落說明,將該資料夾加入 PATH。
Q: 我用 servbayctl start <service> 啟動服務失敗,該怎麼排查?
A:
- 先用
servbayctl status <service>再次查詢運行狀態。 - 檢查 ServBay 安裝目錄下的
logs資料夾,閲讀該服務相關的錯誤日誌,通常可發現原因。 - 試著用 ServBay GUI 啟動同服務,GUI 會有更友善錯誤提示。
- 檢查服務設定檔是否有誤。
Q: -all 參數適用於全部服務嗎?
A: -all 主要用於支援多版本安裝之服務(如 PHP)。多數資料庫(如 MySQL、PostgreSQL 等)或 Web 伺服器(如 Caddy)通常單一實例運作,此時用 -all 與不指定版本效果相同。至於 Redis 或 Memcached 這種可多進程、不同端口執行的服務,-all 可能會同時控管多個實例(實際行為取決於 ServBay 內部設計)。
結論
servbayctl 為 ServBay 開發者量身打造的強大命令列工具,大幅提升本地開發環境服務管理的彈性與效率。熟練運用 start、stop、reload、restart、kill、status、stop-all 等命令,加上 version 及 -all 等參數,你可輕鬆於終端機掌控包含 PHP、MySQL、MariaDB、PostgreSQL、MongoDB、Redis、Memcached、Caddy 等主流服務,順利導入自動化工作流程,全面優化你的開發體驗。
