2011-08-30 75 views
0

我可以使用launchctl启动应用程序,如下所示:launchctl submit -l程序名称 - 打开-g -b com.company.ProgramName,它非常棒!我可以杀死应用程序,即使它崩溃,它也会重新运行。Mac OS - 使用launchctl添加应用程序以自动启动

但是,当我注销或重新启动Mac,我的过程不再运行。或者,在某些情况下,它不会与ProgramName(我的应用程序名称)一起运行,但会以ProgramName.app/Contents/MacOS/program_name中的可执行文件名称运行。

这样的情况与plist文件。我运行命令launchctl -w/Users/my_username/Library/LaunchAgents和进程正常工作!但重启后我看不到它。

我更喜欢第一种方法来加载进程,任何建议为什么进程不能在重新启动后自动加载?

回答

0

我相信你需要设置“RunAtLoad”,以“真”为它在启动时,用户登录您的应用程序。

但也没办法使用“提交”时,通过命令行来设置RunAtLoad。至少不在我在线查看的launchctl.c版本中。

它看起来像你必须创建一个.plist文件与“加载”,而不是使用“提交”。

更令人讨厌的是,launchctl的“加载”,无法将stdin作为.plist文件名的输入,无论是无参数还是名称“ - ”。可惜的是,launchctl的开发者可能不是来自Unix背景。这意味着你必须在文件系统的某个地方丢弃短暂的文件,至少在你加载之前。

+0

嗯,它似乎从10.5“OnDemand”和“RunAtLoad”两个替换为“KeepAlive”。我正在阅读它看起来较旧的文档。 – lundman

相关问题