问题标签 [launch-agent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
379 浏览

macos - 用于启动另一个应用程序的应用程序的 OSX LaunchAgent

我正在尝试为 cassandra 设置本地 LaunchAgent,但遇到了一个问题,因为bin/cassandra它只是一个启动的 shell 脚本:

我的 LaunchAgent 启动脚本,但要么从不启动 cassandra,要么不允许它产生子进程,或者,我不完全确定发生了什么,但似乎我以前遇到过这个问题。我知道让它工作的唯一方法是将我的 LaunchAgent 从:

至...

我想知道是否有人知道我如何仅从 LaunchAgent 引用 shell 脚本,而不是从中提取所有参数ps aux

0 投票
1 回答
406 浏览

macos - LaunchAgent 打开 FileMaker 脚本

我在 OS X 10.4.11 上使用 launchd 对 FileMaker 脚本进行类似 cron 的调度,这真是太棒了。(我在serverfault描述了我早期的工作经历。)起初我认为问题在于 FileMaker 脚本打开了一个 GUI,这对于 LaunchDaemon 来说似乎是禁止的。然后我把它改成了一个 LaunchAgent,它允许使用窗口资源,但仍然不行。

以下是一些没有意义的事情的清单:

  1. 如果您在手动加载任务后使用 launchctl 启动任务,那么一切正常。

    sudo launchctl start my.script.name

  2. 如果您选择未来几分钟(而不是未来几个小时)的 StartInterval,然后加载 .plist,一切正常。(起初我以为这可能与屏幕保护程序有关——当 ss 执行时,某些东西会被垃圾收集或其他东西;但如果即使在 ss 启动之后也安排了它,它似乎也可以工作,只要它不是未来太远了。)

  3. 我将 FileMaker 程序的调用封装在一个 shell 脚本中,该脚本除了执行 FileMaker 程序外,还将时间戳写入日志文件。通过阅读这个日志文件,我可以验证,是的,shell 脚本确实是由 launchd 在适当的时间调用的。或者至少,几乎,因为:

  4. 日志显示了一些奇怪的东西:如果我安排在晚上 8:08 启动脚本,我会执行两次,彼此相隔几秒钟:

    [Tue Jan 24 20:07:57 CST 2012] 执行脚本!

    [Tue Jan 24 20:08:00 CST 2012] 执行脚本!

我已经走到了尽头——我已经阅读了相关的联机帮助页、Apple 技术文档以及 StackExchange 站点上的其他文章。我真的尽我所能完成了我的功课。任何可以帮助我的人都会有一些严重的因果报应。

再说一次,这里是 .plist,其中一些杂乱无章(XML 定义、日志信息)被编辑掉了。(请记住,这在手动加载时有效,所以我知道 plist 本身没问题。)

0 投票
0 回答
1673 浏览

macos - Mac LaunchAgent PLIST 未启动

我正在尝试开发一个 Mac LaunchAgent 并对此进行测试,它应该启动控制台:

该文件似乎已加载(终端中没有错误),但控制台未启动,并且终端中似乎也没有进程。我还尝试了一个 PHP 脚本,但也没有启动。

0 投票
2 回答
1464 浏览

macos - OSX launchd:监控有线连接的可靠方法?

我不想看 /Library/Preferences/SystemConfiguration 来处理 [network] 位置更改 b/c 这样做会导致我的脚本在每次更改时连续运行两次。

观看 /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist 适用于 wifi,但无法捕捉到,例如,我在 WiFi 上并插入我的迅雷以太网。

有没有可以查看有线连接的 plist?或者我是否坚持添加第二个 LaunchAgent,每 5 秒轮询一次,然后在有线以太网变为活动状态时触摸 ~/Library 中的某个文件?

0 投票
1 回答
337 浏览

macos - 配置 mongod 服务:启动守护进程还是启动代理?

我正在使用 10gen 构建在 OS X 上安装 MongoDB。
但是他们的安装教程对我来说有点稀缺。

到目前为止,我已经找到了mongod作为启动代理启动守护程序安装的示例。根据我对启动守护进程与启动代理的理解,什么方法是最好的/足够的最小值?

是否mongod需要通过窗口服务器显示信息,所以最好将服务配置为启动代理还是使其成为启动守护程序就足够了?

0 投票
1 回答
994 浏览

macos - 卸载包时停止 LaunchAgent

我构建了一个提供 LaunchAgent 的应用程序(一个带有“托盘”图标的小型 UI 应用程序;假设在/Library/LaunchAgents/foo.plist.

安装包时,launchctl 会自动加载此 LaunchAgent 描述并为所有登录用户启动进程。(即我不必像使用LaunchDaemons 那样使用launchctl load 来加载它)。

当我卸载软件包时,所有文件 - 包括 LaunchAgent plist 文件/Library/LaunchAgents都被删除,但进程仍在运行。

(我有几个用户登录,所以这个代理有几个实例)

现在,我应该如何告诉 root launchd 在以 root 身份运行时停止这些进程(对于未指定数量的用户)?(注意,以 root 身份运行的 launchctl 甚至看不到这些代理)。

(pid-files,killall more-or-less-unique-executable-name是最后的手段,我将这些解决方案作为最后的手段)

0 投票
1 回答
364 浏览

macos - 需要 Apple launch.h api 的文档

我通过终端加载了一项服务作为 launchctl load /System/Library/LaunchAgent/com.example.my.plist

现在,我需要以编程方式检测服务是否正在运行并启动服务。 http://www.opensource.apple.com/source/launchd/launchd-328/launchd/src/launch.h 上面是Apple提供的launch.h api的链接,有助于实现这一目标。

任何人都可以帮我处理它的文档吗?或者,帮助我如何使用 api 检查服务的状态并启动它。

谢谢。

0 投票
1 回答
670 浏览

macos - 内部shell脚本:从终端将Python输出写入文件工作,从launchd运行时“输入流为空”

我编写了一个简短的 shell 脚本,用 Geeknote 将 Evernote 笔记的内容写入一个文件,该文件在 python 下运行:

当我从终端运行该脚本时(它将第二个 python 命令的输出写入 output.txt),该脚本运行良好,尽管理想情况下我希望该脚本自行定期运行。所以我尝试创建一个 .plist/LaunchAgent 来运行脚本,但是当我这样做时,唯一写入 output.txt 的东西是Input stream is empty......无法弄清楚原因。现在我的 .plist 看起来像这样:

0 投票
2 回答
1814 浏览

macos - 在 Mac 应用程序沙箱中使用 LaunchAgent

您将如何在沙箱中使用LaunchAgent?我想在我的主应用程序中分发一个无 UI 的 LaunchAgent 应用程序包,我可以按需启动它。我想要这个而不是 XPC 服务的原因是该KeepAlive选项,它可以防止launchd在空闲时自动杀死我的进程。XPC 服务上不存在此选项。

文档说有一个 plist 需要复制到~/Library/LaunchAgents中,这在沙箱中显然是不可能的。是否有某种系统 API 可以为我处理 plist 的复制?我看过 Apple 的SMJobBless示例代码,但这似乎是用于注册特权 LaunchDaemon 而不是非特权 LaunchAgent。

0 投票
0 回答
33 浏览

ruby - 从 LaunchAgent 运行时 Ruby 无法与文件系统交互

我有一个使用 OS X 启动代理触发的 Ruby 脚本。该脚本从磁盘读取一堆文件(总共 21 个),进行一些处理,将它们编译成 RSS 提要,然后使用 scp 将其上传到远程计算机。当我从命令行运行该脚本时,它运行良好。但是,当我使用启动代理运行它时,我遇到了一些非常奇怪的问题。我已将问题隔离到这一行:

@content这里指的是一个文件的内容,之前读过。这一行嵌入在一个类中,该类对每个文件进行串行处理。关于这一行的某些事情以某种方式导致执行被丢弃——当我在这一行之后放置一个日志语句时,它仅在作为启动代理运行时触发 16/21 的文件。从命令行运行时,没有问题。

我还注意到,这 5 个文件几乎但不完全是 21 个文件中最大的 5 个。可能会发生什么?使用 LaunchAgents 时有什么众所周知的典型问题吗?

更新:是破坏代码的文件之一。