4.4 管理后台服务:brew services

原文链接: https://brew.sh/

不少 formula 除了提供命令行工具,还会附带后台服务,例如 PostgreSQL、MySQL、Redis、nginx。macOS 上这些服务通常通过 launchd 管理,而 brew services 正是 Homebrew 提供的友好封装。

常用子命令

1
2
3
4
5
6
brew services list       # 列出所有服务及其状态
brew services run <formula>     # 本次会话运行,不注册开机自启
brew services start <formula>   # 立即启动,并注册为登录时自启
brew services stop <formula>    # 停止服务并取消自启注册
brew services restart <formula> # 重启服务
brew services cleanup           # 清理未安装/无用的服务文件

完整示例:PostgreSQL

1
2
brew install postgresql@16
brew services start postgresql@16

启动后 PostgreSQL 会在后台运行,即使关闭当前终端也不会退出。重启电脑后,由于 start 已注册 launchd 登录项,服务会自动恢复。

查询状态:

1
brew services list

输出中 postgresql@16 一行的状态应显示 started。

什么时候用 run 而不是 start

  • 你只是想临时调试一个服务,不希望它一直自启;
  • 你使用项目级数据库,希望在会话结束时随之停止;
  • 你在 CI 或脚本里临时起服务。

与其他工具的关系

  • 如果你希望“每次终端进入某项目目录才启动服务”,可配合 Brewfile 中的 restart_service;
  • brew services 管理的服务以你的用户身份运行,不需要、也不应该用 sudo;
  • 想了解服务究竟注册成了什么,可查看 ~/Library/LaunchAgents 下 Homebrew 生成的 plist。

提示:brew services 的部分历史行为在 man brew 的 SERVICES 段落有完整说明;本书只覆盖最常用的生命周期操作。