问题标签 [launch-daemon]
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.
launch-daemon - LaunchAgent 故障排除(LaunchAgent 未开始加载)
我在启动 LaunchAgent 时遇到了问题,并在 Google 上搜索了很多,并找到了多种解决问题的方法,为了他人的利益,将它们全部记录在一个地方
mongodb - 需要使用 launchctl 启动 mongod
我已经MongoDB
使用手动选项安装了。
当我触发 mongod 时,它会从其他地方专门为dbPath
.
我想拥有自己的dbPath
而不是每次都用 --dbPath 指定它。
所以我找到了提供mongod.conf
文件和调用mongod --config
选项的选项,但我仍然需要传递.conf
文件的路径。
我的最终目标是将 mongod 作为服务启动,它将从我配置的路径中读取配置文件。为此,我尝试LaunchAgent
了LaunchDaemon
但没有运气。我的想法是,如果我可以配置LaunchAgent
或守护进程,那么我将提供 MongoDB 文件夹的 bin 目录的 mongod 路径,并提供文件--config
路径.conf
作为参数,然后我只需要使用launchctl
名称 mongod 启动 mongod,它就会启动mongod --config <.conf file path>
。
但我不能这样做。我阅读了近 15-16 篇关于 LaunchAgent 和 Daemon 的帖子,但没有解决我的问题。我试图通过在不同的地方制作 mongod.plist 文件来做到这一点/Library/LaunchDaemon
,/Library/LaunchAgent
但~/Library/LaunchDaemon
我总是得到错误“ Path had bad ownership/permissions
”。我试过了chown
,chgrp
但没有运气。
我希望你明白我的意思。我真的需要完整的解决方案来实现我的目标。
session - systemd 服务无法连接到会话 d-bus
我有一个应用程序必须在启动期间连接到会话 dbus。如果我手动启动我的应用程序或从 initd 启动,它正在启动并连接到会话 dbus。但是,如果我通过 systemd 命令作为 systemctl --user start my-service 启动,它位于路径“/etc/systemd/user”中,则会显示以下错误“无法连接到总线:没有这样的文件或目录”。可能的原因是什么?
服务文件如下:
操作系统是 Ubuntu 16.04(64 位)。谁能帮我这个?
django - 应该如何安装 Postgres 以在 Mac OSX 上以用户名 _postgres 作为守护进程运行?
我按照使用 Brew 在 Mac OS X 上安装 Postgres 的说明进行操作。一切运作良好。我在我的 .plist 中放置了一个 .plist,Library/LaunchAgents
并在我登录时运行了 Postgres。但是,当我注销时,postgres 关闭(这是用户Library/LaunchAgents
目录中由 launchd 启动的进程的正确行为)。
我想让数据库一直为所有用户运行,所以我尝试将我的文件 homebrew.mxcl.postgresql.plist 移动到目录/Library/LaunchDaemons
中。我将 owner:group 设置为 root:wheel 并设置权限。这不起作用,因为 Postgres 说它不会以 root 身份运行(在日志文件中报告/usr/local/var/log
)。所以我为每个添加了一个 UserName 和 GroupName 为 _postgres。它不会运行,我相信存在权限问题,我收集到的 postgres 作为 postgres 运行的 postgres 运行为 user:group of _postgres:_postgres 无法读取其中的文件,/usr/local/var/postgres
或者/usr/local/var/log
这些文件都是 sholland:admin for user:group (brew 安装我的用户名 holland 和组管理员下的文件)。我将 UserName 更改为 sholland 并将 GroupName 更改为 admin in/Library/LaunchDaemons/homebrew.mxcl.postgresql.plist
,现在 postgres 以用户 sholland group admin 的身份在每次重新启动时都能愉快地运行。
这一切都很好,但我想在用户 _postgres 下运行 Postgres。我想我可以sudo chown _postgre:_postgres *
在 /usr/local/var/log 和 /usr/local/var/postgres 中使用,但我不知道如果我走那条路是否还有其他问题。如果 brew 使用 user:group _postgres:_postgres 而不是在我的用户名和组 admin 下进行安装,似乎一切都会更干净。
能够将 homebrew.mxcl.postgresql.plist 中的 user:group 设置为 _postgres:_postgres 的动机是我将把项目迁移到我医院服务器上的 linux 系统上,我将使用 Django 运行报告生成器和我的 GI 组的患者跟踪系统。我将需要在它自己的用户:组下运行 postgres,以在该环境中保留我个人用户 ID 以外的权限。
那么,如何在 Mac OS X 下 brew 安装用户 _postgres 下的 postgres 呢?
python - Mac 的 LaunchControl 给我错误
我一直在尝试安排一个使用 LaunchControl for Mac 运行的 Python 脚本。我的脚本包含 f 个字符串,这是 Python 3.6 中的新内容。
出于某种原因,我一直在 f 字符串上收到语法错误,并且什么都不会运行。
macos - 向 macOS Mojave LaunchDaemon 授予相机权限
我写了一个 macOS Mojave LaunchDaemon,它触发一个 shell 脚本来运行imagesnap程序。目的是每秒从相机中捕获一张静止图像。
问题:守护程序失败并出现以下错误。我不知道是什么导致它失败,但似乎相机不可用或 root/launchd 没有相机权限。请注意,脚本、自动化应用程序和在命令行上运行的 imagesnap 都可以自行运行,并且只有在我尝试从 LaunchDaemon 运行它们时才会失败。
我发现了什么:
- 该脚本作为普通用户、使用 的普通用户
sudo
以及使用 登录的 root 用户运行良好sudo su
。我在 iTerm2 中运行它并弹出一个请求访问摄像头的弹出窗口,我同意了。该脚本在由 LaunchDaemon 运行时失败。 - 我创建了一个 Automator .app 并使用
/usr/bin/open
. 我再次收到一个请求我批准的相机许可的弹出窗口。由 LaunchDaemon 运行时,automator .app 会失败。 - 如果我在第 4 行省略了 imagesnap 命令,LaunchDaemon 运行脚本不会出错。
- .plist 被加载并启动并连续执行 shell 脚本,因为它应该使用 KeepAlive 键集。
snapscript_err.log 片段
system.log 片段
/Library/LaunchDaemon/com.example.snapscript.plist 文件
/usr/local/bin/snapscript.sh 文件
macos - MacOS - 我的已启动 plist 有什么问题?
MacOS High Sierra,我有一个要与 launchd 一起使用的 plist。
我正在尝试使用它,~/Library/LaunchDaemon
但它不起作用。
当我sudo lauchctl load com.myscript.mac.plist
什么都不使用时输出。没有确认消息,没有错误消息,什么都没有。这就是我似乎停滞不前的地方。
顶层文件夹private
是隐藏的,以防万一。
我的脚本有什么问题?为什么我不能让它运行?
macos - 如何忘记 MacOS 捆绑包以防止无效安装
背景
我正在开发一些 Mac OS 守护进程。有时我将它作为我的存储库中的应用程序启动以测试一些东西。到目前为止,一切都很好。我能够创建可以被其他人使用的安装包,完全没有问题。
问题
当我使用安装包时,有时守护程序不会复制到所需的路径。在安装日志中,我可以看到流畅的语句:
基本上安装程序注意到在某个目录中存在具有相同捆绑 ID 的捆绑包,因此它决定跳过其在所需位置的安装。现在由于启动我的服务的 xml 使用安装包中定义的位置,服务启动失败。
问题
有什么方法可以通知系统忘记我的包的私有版本,而不删除它?我需要一种方法来防止安装程序跳过安装某些捆绑包,因为它找到了其他版本。
python - LaunchDaemon 将不同的 Python 实例运行到终端
使用具有以下 plist 的 LaunchDaemon:
要启动的脚本在哪里
我有我不理解的行为。
当我在终端中运行脚本时(which python3
结果为/Users/my-name/opt/anaconda3/bin/python3
),我收到以下输出:
这是所希望的,因为我希望运行的实际(非玩具)脚本使用我在 Anaconda 中安装的 PyObjc 包。
但是,当脚本由 LaunchDaemon 运行时,我在test.log
文件中得到以下内容:
这是一个问题,因为我希望运行的实际脚本取决于 Anaconda 中的一个包。我曾预计,因为脚本中的第一个程序参数是python3
它会以与python3
终端相同的方式运行,但我错了。
为什么脚本会这样?我认为这可能是因为它将脚本运行为sudo
,但sudo which python3
也返回了 Anaconda 的路径。
我该如何解决这个问题?我确信一个简单的解决方案是在 Python3 的 Xcode 版本中的某个位置安装我想要的包。但是,我实际上不确定该怎么做。这也会让人感到有点不满意,因为我想知道 LaunchDaemons 为什么会这样。
macos - 启动守护程序无法访问钥匙串条目
我有一个命令行进程,它正在调用 API 并从钥匙串中获取令牌。当我在终端使用/不使用 sudo 独立运行此过程时,它能够访问钥匙串条目。现在我已将其转换为启动守护程序并尝试将其作为启动守护程序执行,然后它无法访问令牌并给我错误“无法从钥匙串读取存储的项目(状态:-25308)”。我正在使用下面的 plist 来创建启动守护进程。
有人可以建议我在这里缺少什么吗?