You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS中实现App Bundle多实例启动

macOS 封装脚本APP多实例并行运行最优解决方案

你之前配置LSMultipleInstancesProhibited未生效的核心原因是该键的语义为「禁止多实例」,开启多实例需要将该布尔值设为false,而非true。

以下方案按优先级从高到低排序:

方案1:原生系统级多实例支持(最推荐)

  • 保留app完整功能(包括Dock图标、Finder文件关联),无需修改核心脚本逻辑
  • 在app的Info.plist中添加/修改以下两个键:
    • LSMultipleInstancesProhibited:布尔值设为false
    • LSUIElement:如果不需要在Dock常驻显示,可设为true,进一步降低系统对实例的限制
  • 配置完成后右键打开一次app完成签名缓存更新,后续即可直接双击多次打开、或拖拽多个文件到app图标并行处理

方案2:入口脚本异步分发(适配现有逻辑的优化版)

比直接加&更稳定,不会出现参数丢失、进程被系统回收的问题:

  • 打开app包内容,进入Contents/MacOS/目录,找到默认的入口可执行文件,替换为以下逻辑的shell脚本:
#!/bin/zsh
# 接收所有传入的文件路径参数
TASK_ARGS="$*"
# 异步调用实际业务脚本,nohup保证入口进程退出后任务正常运行
nohup /bin/bash /path/to/你的实际业务脚本路径 $TASK_ARGS > ~/Library/Logs/你的脚本日志名.log 2>&1 &
# 入口进程立刻退出,释放系统实例配额
exit 0
  • 给新的入口脚本加执行权限:chmod +x /path/to/你改后的入口脚本
  • 优势:无需修改plist配置,完美兼容Finder拖拽文件打开的逻辑,多个任务完全并行互不干扰,还能自定义日志路径排查问题

方案3:命令行强制多开(适合批量调用场景)

如果需要脚本批量触发任务,直接用open命令的-n参数即可绕过系统实例限制:

# 强制启动新实例打开指定视频文件转码
open -n /Applications/你的转码.app /Users/xxx/Downloads/待转码视频.mp4
  • 该参数在Big Sur及所有后续macOS版本均原生支持,无需修改app任何配置

内容的提问来源于stack exchange,提问作者florit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:06:04