1
clague 2021-11-01 23:54:17 +08:00 via Android
我觉得你看日志就行了
|
2
0superx0 2021-11-01 23:59:40 +08:00
个人了解,相当于 ubuntu 的 apt 跟 dpkg 的区别...
|
3
Kobayashi 2021-11-02 00:29:31 +08:00 2
你没说清楚直接跑 nginx 用的什么命令。不过好像这并不重要。
区别 - brew: launchd 管理前台进程 nginx -g daemon off; 也就是类似于 systemd (毕竟 systemd 参考了 launchd ) - 你自己运行: nginx. nginx 自行管理进程(后台) 我觉得可能问题不在于这 2 个命令,而在于权限(执行权限和配置、日志等权限)。brew services 不支持 root (会有副作用,等下讲)。有些服务监听在小于 1024 端口,需要 root 权限。 brew services 创建用户级别 LaunchAgent (~/Library/LaunchAgents )。sudo brew services 创建系统级别 LaunchDaemon (/Library/LaunchDaemons )。 HOMEBREW_PREFIX (/usr/local for x86, /opt/homebrew for arm64 )下文件权限是 $USER:staff 。sudo brew services nginx 会修改 nginx 相关文件权限为 root:admin 。之后的 brew update 等命令由于无法访问 root:admin 权限的文件,从而执行报错。 所以,sudo brew services 不是不可以使用,但每次你使用过后应该修复文件权限。 # For x86 Mac sudo chown -R "$(whoami):admin" /usr/local/* # For M1 Mac sudo chown -R "$(whoami):admin" /opt/homebrew/* (可以用 find 优化一下) 结论 /使用策略:使用 Homebrew 时,能避免 sudo 就别用,如 监听在 3306 的 MySQL ,这端口完全可以用普通用户权限监听。Nginx (80, 443), dnsmasq unbound (53) 可以用 sudo brew services ,但记得修复文件权限。 |
5
julyclyde 2021-11-02 12:22:27 +08:00 1
brew services 是托管给 launchd 的,相当于系统服务。和 linux 里 systemd 类似。都是定义了后台服务的生命周期和状态的
你手工运行那个,就仅仅是一个进程而已 |
6
kingxiangqi 2021-12-22 22:28:34 +08:00
|