如何为Homebrew管理的AutoRaise服务配置指定启动参数?
如何为Homebrew管理的AutoRaise服务配置指定启动参数?
我来帮你搞定这个问题!你之前的尝试里其实差了关键一步——launchd的plist配置中,命令、参数、参数值必须各自单独作为<string>元素,不能把参数和值写在同一个字符串里。这就是你之前第2种尝试失败的核心原因。
正确的解决步骤:
先停止当前运行的AutoRaise服务
打开终端执行:brew services stop autoraise修改Homebrew的AutoRaise plist配置文件
用编辑器打开你之前修改的那个plist文件:open -e /usr/local/Cellar/autoraise/4.7/homebrew.mxcl.autoraise.plist找到
ProgramArguments对应的节点,把它改成下面的格式(每个参数和值都单独占一行):<key>ProgramArguments</key> <array> <string>/usr/local/opt/autoraise/bin/AutoRaise</string> <string>-delay</string> <string>0</string> <string>-focusDelay</string> <string>1</string> </array>保存文件并关闭编辑器。
重启AutoRaise服务
执行命令让新配置生效:brew services restart autoraise验证参数是否正确加载
执行下面的命令查看AutoRaise的进程参数:ps aux | grep AutoRaise | grep -v grep如果输出里能看到
-delay 0 -focusDelay 1,就说明参数已经正确加载了。
为啥你之前的尝试都失败了?
- 尝试1:把命令和参数写成单个字符串,launchd会把整个字符串当作要执行的程序路径,自然找不到这个“带参数的程序”,直接启动失败。
- 尝试2:把
-delay 0合并成一个字符串,launchd会把它作为一个完整的参数传给AutoRaise,但AutoRaise只识别-delay作为参数名,后面需要跟单独的值,所以会把这个合并字符串当成无效参数。 - 尝试3、4:用
-delay=0或--delay=0的等号格式,AutoRaise的参数解析不支持这种写法,只会识别空格分隔的参数名和值。
另外,你可以先在终端直接运行下面的命令,确认参数本身是有效的:
/usr/local/opt/autoraise/bin/AutoRaise -delay 0 -focusDelay 1
如果AutoRaise能正常启动并按你的预期工作,那按上面的步骤修改plist后肯定能解决问题~
备注:内容来源于stack exchange,提问作者noobie
相关产品推荐
相关产品推荐

