我可以像这样使用launchctl启动应用程序:launchctl submit -l ProgramName - open -g -b com.company.ProgramName,它工作得很好!我可以杀死app,它会重新运行,即使它崩溃了。
但是当我注销或重启Mac时,我的进程不再运行。或者,在某些情况下,它不运行ProgramName(whitch是我的应用程序名称),但在ProgramName.app/Contents/MacOS/program_name中具有可执行文件的名称
plist文件的这种情况。我运行命令launchctl -w / Users / my_username / Library / LaunchAgents并且进程工作正常!但重启后我看不到它。
我更喜欢第一种加载流程的方法,以及为什么流程在重启后不会自动加载的任何建议?
答案 0 :(得分:0)
我相信您需要将“RunAtLoad”设置为“true”才能在用户登录时启动您的应用程序。
但是使用“submit”时无法从命令行设置RunAtLoad。至少在我在线检查的launchctl.c版本中没有。
看起来您必须使用“加载”创建.plist文件,而不是使用“提交”。
更令人讨厌的是,launchctl的“加载”,不能将stdin作为.plist文件名的输入,无论是无参数,还是名称“ - ”。惭愧,也许launchctl的开发人员不是来自Unix背景。这意味着你被迫在文件系统的某个地方乱丢你的短文件,至少在你加载它之前。