命令列工具 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
基本指令格式如下:
servbayctl <command> <service> [parameters]
<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]
注意:stop-all
命令不需要指定服務名稱或參數,它會停止所有 ServBay 管理的服務。
支援命令詳細說明
以下列出 servbayctl
支援的主要命令、說明與範例:
start
- 啟動服務
啟動指定服務,可指定特定版本或使用 -all
啟動所有已安裝版本。
servbayctl start <service> [-all|version]
- 範例:啟動 PHP 8.1 服務bash
servbayctl start php 8.1
1 - 範例:啟動所有已安裝 PHP 版本bash
servbayctl start php -all
1 - 範例:啟動預設設定之 MySQL 服務bash
servbayctl start mysql
1
stop
- 停止服務
停止指定服務,可指定特定版本或採用 -all
停止所有版本。
servbayctl stop <service> [-all|version]
- 範例:停止 PHP 7.4 服務bash
servbayctl stop php 7.4
1 - 範例:停止所有已安裝 MariaDB 版本bash
servbayctl stop mariadb -all
1 - 範例:停止 Redis 服務bash
servbayctl stop redis
1
reload
- 重載服務設定
重載指定服務的設定,通常修改服務設定檔後可直接套用,不需完全重啟(並非所有服務均支援熱重載)。
servbayctl reload <service> [-all|version]
- 範例:重載 Caddy Web 伺服器的設定bash
servbayctl reload caddy
1 - 範例:重載所有 PHP 版本的設定(如支援)bash
servbayctl reload php -all
1
restart
- 重新啟動服務
重啟指定服務,等同於停止後再啟動。
servbayctl restart <service> [-all|version]
- 範例:重啟 PostgreSQL 資料庫服務bash
servbayctl restart pgsql
1 - 範例:重啟所有已安裝的 Redis 版本(如裝有多個版本)bash
servbayctl restart redis -all
1
kill
- 強制結束服務進程
強制終止指定服務進程。此動作較具風險,應謹慎使用,可能導致資料遺失或損毀(尤其資料庫服務)。適合服務無法正常停止時。
servbayctl kill <service> [-all|version]
- 範例:強制結束 PHP 7.4 服務進程bash
servbayctl kill php 7.4
1 - 範例:強制結束所有 Memcached 進程bash
servbayctl kill memcached -all
1
status
- 查詢服務狀態
查詢指定服務目前是否運行中。
servbayctl status <service> [-all|version]
- 範例:查詢 Caddy 服務狀態bash
servbayctl status caddy
1 - 範例:查詢所有已安裝的 MySQL 版本狀態bash
servbayctl status mysql -all
1
stop-all
- 停止所有 ServBay 服務
一次停止所有由 ServBay 管理並在運行中的後台服務,屬於全域命令,不支援服務名稱或版本參數。
servbayctl stop-all
- 範例:停止所有 ServBay 後台服務bash
servbayctl stop-all
1
支援服務列表
根據 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.2
1
2重啟資料庫服務,套用配置調整:
bash# 假設你已修改 my.cnf 或 my.ini servbayctl restart mysql
1
2系統關機前或 ServBay 升級前,確保全面停止服務:
bashservbayctl stop-all
1檢查 Web 伺服器運作狀態:
bashservbayctl status caddy
1用腳本自動化啟動開發環境:
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 等主流服務,順利導入自動化工作流程,全面優化你的開發體驗。