MAC OS Sierra如何设置应用开机自启?plist配置后未生效
在macOS Sierra中配置.app开机自动启动(管理员权限)的问题
各位大佬好,我正在macOS Sierra系统里尝试设置一款.app格式的应用实现开机自动启动。我知道需要把plist文件放到/Library/LaunchAgents目录,也已经写了对应的plist代码(代码片段如下),要求这个应用每次系统加载时以管理员权限启动,但配置完之后完全没效果,应用根本没法开机自启,有没有人能帮忙看看怎么解决?
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!-- 我的plist代码后续部分未完整粘贴,核心是配置了开机自启和管理员权限相关项 -->
可能的排查与解决思路
根据我之前处理这类问题的经验,给你几个方向试试:
先检查plist的权限和归属
/Library/LaunchAgents下的plist文件权限不对是常见的启动失败原因。正确的配置应该是归属root:wheel,权限设为644。打开终端执行这两条命令:sudo chown root:wheel /Library/LaunchAgents/你的plist文件名.plist sudo chmod 644 /Library/LaunchAgents/你的plist文件名.plist验证plist语法是否正确
macOS的launchd对plist语法要求非常严格,哪怕一个标签闭合错误都会导致加载失败。用系统自带工具验证:plutil -lint /Library/LaunchAgents/你的plist文件名.plist如果有错误,工具会直接指出问题位置,照着修正就行。
确认plist关键配置项是否正确
要实现管理员权限开机自启,这些关键项不能错:Label:必须是唯一的反向域名格式,比如com.yourteam.yourapp,不能和系统其他服务重复ProgramArguments:一定要指向.app内部的可执行文件,而不是.app本身,比如/Applications/你的应用.app/Contents/MacOS/应用主程序RunAtLoad:设为<true/>,表示系统加载时启动UserName:如果要管理员权限,设为<string>root</string>,但注意root启动应用有安全风险,非必要不建议KeepAlive:按需设置,如果希望应用退出后自动重启就设为<true/>,否则设为<false/>
给你一个参考的正确配置示例:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.yourteam.yourapp</string> <key>ProgramArguments</key> <array> <string>/Applications/YourApp.app/Contents/MacOS/YourApp</string> </array> <key>RunAtLoad</key> <true/> <key>UserName</key> <string>root</string> <key>KeepAlive</key> <false/> </dict> </plist>手动加载plist测试
不要直接重启系统,先手动加载plist测试是否能正常启动应用:sudo launchctl load /Library/LaunchAgents/你的plist文件名.plist如果加载失败,终端会给出具体错误信息;如果加载成功,看看应用是否正常启动。要是手动有效但开机无效,可能是系统加载顺序问题,或者需要检查用户登录项里有没有冲突设置。
查看系统日志找原因
如果以上都不行,就去系统日志里找线索:log show --predicate 'process == "launchd"' --info --last 1h搜索你的plist的Label名称,看看有没有权限不足、路径错误之类的报错信息。
内容的提问来源于stack exchange,提问作者Codename K
相关产品推荐
相关产品推荐

