![]() |
1
0
使用launchd代理。所有其他的方法都会让你的脑子里充满无用的细节和隐藏的诡计。总的来说,这是一项非常复杂的任务,有许多角落的情况下,是很难实现正确的。launchd代理可以让您集中精力完成任务并节省大量时间。 最好的解决方案是重写代理以不使用命令行,而是连接到launchd守护进程并请求适当的选项/设置。 如果不可能或很难,可以编写将在启动时连接到守护进程的包装器launchd代理,询问选项,然后使用正确的命令行启动原始代理。 如果您认为实现“连接到守护进程”机制太难了…也许是这样,但它比从daemon在其他会话中启动代理要容易得多(当在不同的角落案例支持下实现时)。 但是,如果你真的真的不管你想要什么肮脏的方式,你可以玩“launchctl bsexec”。一些有效的例子: Starting/stopping a launchd agent for all users with GUI sessions (它可以在会话上下文中启动任何可执行文件,而不是“launchctl load”)。 一些最新消息。 “play with launchctl bsexec”我的意思是这样的:
在会话中找到你想要的应用程序,获取它的PID并调用“launchctl bsexec”在同一会话中运行你想要的程序。上面的示例将在登录的“用户”会话中启动textedit,即使该行在另一个登录的用户acount或from service下执行。 但我在狮子身上做了测试-没用。它只对我的豹子有效(10.5/10.6)。 我想说的是-不使用发射代理会让你屁股不停地痛。在经历了十几件这样的事情之后,我们完全转向了发射代理,现在很高兴:) |
![]() |
smeeb · Akka守护程序服务 7 年前 |
|
Alex Z · 如何为tarantool编写lua守护进程 8 年前 |
![]() |
Alasdair · Go:创建可从其他Go应用程序调用的守护程序 10 年前 |