问题标签 [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 回答
2233 浏览

macos - LaunchAgent 以 root 身份运行 bash 脚本

LaunchAgent 位于 /Library/LaunchAgents

如何让 locationChanger.sh 以 root 身份运行?该脚本抛出错误,说它需要是根。如果我在需要 root 的行前面添加 sudo,它会抛出一个错误,指出需要密码。

bash 脚本中需要 root 的行是“路由添加”和“路由删除”

0 投票
0 回答
89 浏览

macos - 启动代理和“CGSDeviceSynchronize:无效的设备窗口”

我创建了一个作为 LaunchAgent 运行的 OSX 应用程序。它有一个状态菜单。安装后,如果我注销并再次登录,状态菜单不会出现。该应用程序出现在活动监视器中。我注意到 Main Xib 本身没有加载。从控制台,我看到以下日志:

我无法总是复制它。但是每当出现问题时,我似乎都会收到上述日志。

0 投票
1 回答
1057 浏览

objective-c - OSX:“Window Server:将前端应用程序设置为我的应用程序失败”

我正在launchAgent使用以下命令从安装后脚本启动一个:

代理显示NSStatusItem带有几个菜单选项的状态项 ( )。其中之一有一个设置选项。单击此按钮将打开一个NSWindow,并带有几个NSTextFields。有时,虽然这个窗口是最顶部的,但我输入的任何内容都会转到底层应用程序。我无法在文本字段中输入任何内容。每当发生这种情况时,我都会在控制台中注意到以下日志:

这不是一致的行为。知道为什么这个日志会出现吗?有什么解决方法吗?可以使用启动代理su -l吗?

0 投票
0 回答
851 浏览

cocoa - XPC 服务,作为 Launch Agent 启动

我确实创建了一个 XPC 服务,它在后台运行并创建定期任务

  • 将其放入路径 /Users/Peter/Library/Application Support/AGENT TEST APPS/CS Agent.xpc

  • 我可以通过直接执行文件来运行它

  • 我将 .plist 放入 LaunchAgents 中,对可执行文件进行裁判

    /li>

但它不会在启动时启动,因为它应该


更新

确实尝试手动加载

但我没有在活动监视器中看到它,也没有看到它应该产生的任何输出(创建文件)

当我做launchctl list时,我看到了

0 投票
1 回答
780 浏览

osx-yosemite - OSX Yosemite LoginWindow 代理没有持续登录

在 Mavericks 和更早版本中,LimitLoadToSessionType 设置为 LoginWindow 的 LaunchAgent plist 将始终在 LoginWindow 中运行代理并将其持久保存到登录帐户会话中。现在在 Yosemite 中,如果您已将 LoginWindow 指定为 plist 中的唯一会话类型,则代理将运行并且仅在 LoginWindow 期间运行。

登录 OSX Yosemite 后如何保留 LoginWindow 代理?

我尝试过的修复:

- 除了 LoginWindow 之外还添加了 Aqua,但这不可行,因为我无法停止并再次启动代理。

- 调整其他键,例如 KeepAlive 等,但没有任何帮助。就好像 Apple 认为“哦,仅在 LoginWindow 之外持久化 LoginWindow 代理是一个错误,让我们修复它!”。

在这里的任何帮助将不胜感激,谢谢。

0 投票
0 回答
595 浏览

jenkins - LaunchAgent Jenkins 使用插件安装 CocoaPods 失败

我正在尝试设置 jenkins CI 服务器来构建一些 iOS 和 Android 代码。我让它使用 Xcode 插件和一些 shell 脚本构建我的一些项目,主要是pod install. 从那里,我尝试删除这个 shell 脚本并使用 CocoaPods 插件来正确地做事。起初它起作用了。

不幸的是,那是从 CLI 手动运行 jenkins 的时候。我现在设置了一个 LaunchAgent,CocoaPods 插件失败,控制台输出中没有任何错误或有用的指示。

ps 命令结果:

工作时,ps命令结果:

我应该放弃插件,还是 LaunchAgent 有一些我不知道的特殊性?

LaunchAgent homebrew.mxcl.jenkins.plist:

0 投票
0 回答
122 浏览

macos - OS X LaunchAgent - 在桌面准备好时运行?

我创建了一个 bash 脚本,它执行一些复杂的工作,包括一些涉及单击弹出窗口的 Applescript,它可以在机器上创建的每个新帐户上运行,以便为用户设置一些浏览器扩展(Adblock 等)

该脚本在手动调用时运行得很好,但是当作为 LaunchAgent 放置时充其量是不稳定的。它似乎在创建帐户登录/密码屏幕启动时运行 - 它会打开一个欢迎 PDF 以开始,有时当您登录时,预览已经打开而没有文件。

其他时候,您登录并在 50 秒内没有任何反应。有时它的行为也很不稳定。

该脚本需要作为启动代理运行,因为它每个新帐户运行一次 - 该脚本实际上在最后删除了启动代理 plist,因此它无法再次运行。是否有延迟脚本的运行以在桌面完全加载后启动它?也许一旦码头出现了。我将假设它试图运行得太早,它无法打开预览或 Safari,它试图删除正在使用的 plist,然后最终陷入混乱的循环。显然不是最干净的运行方式。

0 投票
1 回答
1201 浏览

macos - MAC OSX 代理 - 如何启动多个实例

我正在尝试创建辅助对象(它可能是守护进程或代理)。正如您在 Chrome 和 Safari 助手中看到的那样,这应该是按需启动的,并且它的多个实例应该在那里。

我尝试了什么?我已经参考了这些Apple DocsLaunchd Tutorial & Creating Start Up Items in Mac OS X

那里提到,对于我们应该使用NumberOfProcesses密钥的进程数量,我使用了它,但在活动监视器中我只看到一个实例。

我的 plist 看起来像这样

从 Chrome 开始,我是否在正确的路径上复制 Launch Agent Helper?请帮我找到完成它的最佳方法?

0 投票
0 回答
718 浏览

macos - 如何加载启动守护程序以在 LoginWindow 上下文中访问 WindowServer?

我正在为 OSX 开发一个可以访问 WindowServer 的应用程序。这个应用程序(我们称之为代理)首先为当前登录的每个用户加载。我正在搜索正在运行的 loginwindow 进程,并将我的 plist 加载为每个用户(在 bsexec 的帮助下设置适当的上下文)。

  • ps -ef | grep 登录窗口

    501 90425 1 0 上午 10:46 ?? 0:01.21 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow 控制台

    502 90721 90426 0 上午 10:54 ?? 0:00.36 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow

    0 91103 90426 0 上午 11:01 ?? 0:02.57 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow

在这里,我有三个登录窗口进程 2 用于登录用户(非活动),一个用于登录窗口(活动)。

  • 我跑:

    /li>

对于每个登录的用户。

  • /li>

对于我的登录窗口。

问题是我的代理在登录窗口(以 root 身份)启动导致错误:

但是当我登录到用户,然后再次注销到登录窗口时,我启动的代理被正确创建,我可以毫无问题地访问窗口服务器。

在较新的 OSX 版本上会出现问题(例如在 10.6.8 上它可以正常工作)。

我的想法已经不多了,但我真的很想让这个在登录窗口上工作。预先感谢您的任何帮助!

/古拉什

0 投票
1 回答
1513 浏览

macos - 无法在 OS X 10.10 上为 Qt Creator 设置自定义 $PATH

我将 Qt Creator 与自定义构建系统(忍者)一起使用。问题是传递给 Qt Creator IDE 的 $PATH 变量绝对是 vanilla: /usr/bin:/bin:/usr/sbin:/sbin

所以我必须编写bash -c '/path/to/ninja list of targets'而不是仅仅ninja list of targets在终端中执行构建步骤,而不是在 IDE 中。

我尝试了所有已知的方法来设置 $PATH。

  • ~/.bash_profile 和 ~/.profile
  • /etc/路径
  • /etc/paths.d/*
  • /etc/launchd.conf ( setenv PATH .....)
  • ~/Library/LaunchAgents/*.plist ( sh -c 'launchtcl setenv PATH $PATH:.....')
  • /库/LaunchAgents/*.plist

StackOverflow 回答中描述了使用启动agenes 的想法。

没有工作!我的自定义 .plist 文件中的任何任意环境变量都正确设置 - 除了 PATH 之外的任何环境变量。(我已经简单地对其进行了测试:创建了一个自定义构建步骤echo xzxzxz=$XZXZXZ path=$PATH,其中 xzxzxz 也在我的启动代理中设置)。

有趣的是,如果我从 bash 会话 ( '/Applications/Qt Creator.app/Contents/MacOS/Qt Creator' &) 启动 Qt Creator,它会获得正确的 PATH,与 bash 本身相同。

有趣的是,分配给启动代理的 PATH 稍后会被覆盖。我在那里写了sh -c 'launchctl setenv PATH $PATH:/HELLOWORLD',但我没有看到 HELLOWORLD echo $PATH。因此,存在竞争条件,有人稍后从 /etc/paths 和 /etc/paths.d 重建 PATH。

因此:

  • 是否有详尽且最新的说明如何在 OSX 10.10 上设置环境变量,尤其是 PATH?
  • 为什么 PATH 变成香草?
  • Qt Creator 如何取胜?