问题标签 [launchd]
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.
macos - 当您的代码作为 LaunchDaemon 运行时,如何在不重新启动的情况下首次启动 LaunchAgent?
我有一个 LaunchDaemon。当它运行时,它会检查是否安装了 SIMBL。如果没有安装 SIMBL,它会使用 NSTask 在 SIMBL.pkg 上运行 /usr/sbin/installer。
SIMBL 的 postflight 脚本然后尝试运行 launchctl load 命令以立即启动 SIMBL 的 LaunchAgent:
这失败了,因为我的 LaunchDaemon 的 NSTask 环境没有设置 $USER 。
如果我让我的守护进程使用系统配置框架检测当前用户并使用 setEnvironment 将其传递给 NSTask,launchctl 会在我身上出现错误:
我意识到,根据定义,守护进程不应该在用户会话中运行。出于同样的原因,Apple 似乎推荐 LaunchAgents 作为 LaunchDaemons 的辅助对象,以完成用户会话工作。有没有办法让这样的代理立即启动并运行?
我将所有 .plist 都放在正确的位置(它们在重新启动后开始运行,下次 launchctl 进行常规加载)所以我的第一个想法就是告诉 launchctl 重新加载。但是所有执行此操作的代码都在 launchctl.c 中注释掉了:
...
macos - 在 mac os x 上以另一个用户身份运行守护进程
我现在正在尝试在 Mac Os 上为 jenkins 创建单独的用户并使用该用户运行它。我创建了一个新用户:
我尝试以 jenkins 用户身份运行 jenkins:
并得到一个错误:
在我为 jenkins 用户创建目录之后:
跟随下一个错误:
一般问题:
- 如何在没有主目录的情况下为守护进程创建 _www 类用户,即
- 我如何以这个新用户的身份运行脚本。
感谢帮助!
objective-c - 在启动守护进程中使用 Appkit 框架
我想使用 NSWorkspace 来检查应用程序是启动还是关闭。
但是这个过程是 Launch Daemon 并且 Apple 文档说它不是线程安全的。
但是,使用 Workspace 的部分代码不会在启动或登录时执行。它会在通过 BSD 通信从其他应用程序接收到一些命令后执行,并且进程是没有 UI 的后台进程?
在这种情况下使用 Appkit 框架是否安全?只有 NSWorkspace API 而没有其他?另一种解决方案是轮询?你的建议是什么?
objective-c - 以当前 Mac OS X 用户身份执行进程,而不是以 root 身份执行进程
我创建了一个始终在 root 下运行的 Mac OS X 助手应用程序。我需要从中启动其他应用程序,但不是以 root 身份启动。我希望它从当前登录的用户(不是 sudoed root)启动。
我尝试过使用[NSTask launchedTaskWithLaunchPath:arguments:]
和许多其他方法,但它们都使用 root 权限来启动我的应用程序。
作为当前 Mac OS X 登录用户,如何从帮助程序启动我的应用程序?
macos - dylib:找不到图像,但路径看起来正确
在一台计算机上,OS X launchd 守护程序在无法加载 MailCore 框架时崩溃。但是,该框架位于预期的位置,并且该守护程序在我的计算机以及其他几个计算机上正常运行。有谁知道可能导致“找不到图像”错误的原因?或者如何解决这个问题?
MailCore 库安装在:
/Library/Application Support/ArgusLink/bin/MailCore.framework/Versions/A/MailCore
尝试加载它的二进制文件安装在(并通过 launchd 运行):
/Library/Application Support/ArgusLink/bin/arguslinkd
MailCore 的安装名称是:
@loader_path/MailCore.framework/Versions/A/MailCore
MailCore 是为 i386 架构而构建的。守护进程崩溃的计算机正在运行 10.6.8,我已经成功测试过。
完整的崩溃报告:
python - LaunchDaemon 处理系统关闭 - 没有 SIGTERM?
我编写了一个小型 python 脚本,我将其作为 LaunchDaemon 运行,以将启动/关闭时间记录到远程数据库。当脚本启动时,它会记录启动时间,然后暂停并等待捕捉 SIGTERM 以记录关闭时间。几乎相同的工作流程被用作登录/注销时间的 LaunchAgent。
然而,苹果的突然终止机制似乎正在给事情带来麻烦。似乎当机器关闭或重新启动时,launchd
只是向启动SIGKILL
守护进程和启动代理发送信号,这是无法处理的。我可能在技术上是错误的,但这基本上就是我正在经历的......
使用 launchctl 手动加载/卸载守护程序会触发SIGTERM
处理程序。但是,当真正的系统关闭发生时,不会触发相同的代码。
有没有人有关于如何预防的建议SIGKILL
?
macos - 由 homebrew 安装的 Mac OS X 上的 Jenkins SSH 问题
我从 homebrew ( brew install jenkins
) 安装了 Jenkins CI。所以,它在我自己的用户下运行。除了对我的 Git 存储库的 SSH 访问之外,一切正常。我不想创建一个单独的用户(例如 jenkins)来运行 Jenkins 并为其创建单独的 SSH 密钥。我只想使用我自己的 SSH 密钥。在命令行上访问我的远程 git repo 可以使用我的 ssh 密钥正常工作,但在 Jenkins 中它不起作用。它给出了“权限被拒绝(公钥)”错误(用户名和项目被混淆(<user>
和<project>
)):
似乎它没有使用我的 ssh 密钥连接到 git 服务器。我尝试将 UserName 密钥添加到 jenkins launchagent plist,重新启动,但没有效果。
如何让 jenkins 使用我的 SSH 密钥连接到我的远程 git repo?
macos - 可可守护进程
我写了一个 FTP 服务器,女巫是通过 ftpd.command 从命令行启动的。现在我想从 Cocoa 应用程序运行该命令。
我想退出应用程序并且命令应该保持运行。当我返回 Cocoa 应用程序时,它应该知道 FTP 服务器是否仍在运行。
有没有人可以帮助我?非常感谢!朱利安
bash - Bash – 在收到信号之前我应该如何闲置?
我有一个用于启动服务器的脚本,用于启动服务器,然后告诉它在 launchd 将其终止时正常退出(应该在关机时)。我的问题:告诉脚本空闲直到它收到信号的适当的惯用方式是什么?我应该只使用 while-true-sleep-1 循环,还是有更好的方法来做到这一点?
cocoa - 来自 launchd 的 NSAppleScript
我有一个启动服务和一个 Cocoa 应用程序。当用户从应用程序文件夹中单击应用程序时,应用程序就会运行。我想从服务中执行以下 Apple 脚本。但是,即使在 xcode 的调试版本中似乎可以工作,但当它作为启动服务构建和安装时它不起作用。