问题标签 [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.
macos - macOS 上的 Global LaunchAgent 实现
我一直在尝试实现一个可以跨多个用户工作的工作全局启动代理,但我无法将其完成。它完美地为单个用户工作,但是当切换到另一个用户时,启动代理失败exit code 78 - function not implemented
并且无法理解错误中的任何内容。下面是我的清单
我已经将启动代理放在了/Library/LaunchAgents/com.my.company.agent.plist
,当我运行时ls -al /Library/LaunchAgents/com.my.company.agent.plist
,我得到
了-rw-r--r-- 1 root wheel 752 Jan 21 13:27 /Library/LaunchAgents/com.my.company.agent.plist
/Library/LaunchAgents 的权限是drwxr-xr-x 8 root wheel 256 Jan 21 13:32 /Library/LaunchAgents
我正在使用此命令加载代理/bin/launchctl load /Library/LaunchAgents/com.my.company.agent.plist
当我跑步时ls -al /Applications/MyApp.app/Contents/Resources/runscript.sh
,我得到了-rwxr-xr-x 1 root wheel 227 Jan 21 13:28 /Applications/MyApp.app/Contents/Resources/runscript.sh
。
runscript.sh 的内容是
根据其他 stackoverlfow 建议,整个配置似乎很好,并且启动代理在第一个用户上运行良好,但是一旦我尝试从第二个用户加载它,它就会失败并出现 78 退出代码,我非常感谢您的输入,谢谢。
macos - macOS 11 启动代理无法访问 NFS 共享
我正在尝试在 macOS 11 上设置启动代理以在 NFS 共享上运行脚本。我的启动代理在脚本位于本地计算机上时工作,但Operation not permitted
在脚本位于 NFS 上时失败。是否可以让 launchd 访问 NFS 共享?
swift - 如果我的 MacOS 应用程序没有 UI,我的切入点应该是什么?
我有一个没有 UI 的 macos 应用程序,它是一个启动守护程序,由于这是我的第一个应用程序,我想检查我是否做对了。是否可以开始在该AppDelegate
方法中运行我的代码,applicationDidFinishLaunching
或者我应该将另一个文件作为我的入口点。我在某个地方读到我应该制作一个 main.swift 文件,但我还没有找到有关该文件的信息。
macos - 我可以使用守护程序打开 DriverKit 用户客户端吗?
我正在 Driver Kit 中构建一个虚拟 HID 设备。
我想从守护程序与虚拟设备驱动程序通信,因为守护程序对于生成将从驱动程序发送的 HID 事件是必需的。
我通过守护程序很好地匹配了我的驱动程序服务,但是当我尝试打开服务时,我-536870174
从这里看到的意思是kIOReturnNotPermitted
.
据我了解,设备驱动程序用户客户端只能com.apple.developer.driverkit.userclient-access
通过 Apple 授权的应用程序打开。
所以,我的问题:
在 Driver Kit 中使用守护进程打开设备驱动程序的用户客户端完全不可能吗?
我在这里唯一的选择是拥有一个具有com.apple.developer.driverkit.userclient-access
权利的中间应用程序,它可以充当守护程序和驱动程序之间的代理吗?
所以它会是这样的:
守护进程<---xpc 连接--> 中间应用程序 <--- 用户客户端 --->虚拟 HID 设备
编辑:要添加到下面关于将应用程序作为守护程序运行的 Phil 答案,这里有一些Apple 书面指南。
bash - 从 bash 脚本中触发通知
目标设备:macOS Catalina 及更高版本
我可以使用一些帮助来解决脚本中的问题,该脚本应该在用户尝试连接到被禁止的 SSID 时触发 osascript 通知。仅当用户已连接或正在尝试连接到被禁止的 SSID 之一时,才会发出通知。
我虽然问题是由于脚本由launchd运行,因此以root身份运行,但是,即使在以登录用户身份运行通知命令之后,即使脚本的其余部分工作也不会发生通知美好的。
其次,我们也无法从本地项目钥匙串中删除被禁止的 SSID 的凭据,但是,如果已连接,该脚本具有将机器踢出被禁止的网络并防止机器将来自动连接的预期效果。我们能够从系统钥匙串中删除凭据,但如果能找到一种方法也可以从本地项目钥匙串中删除该项目,那就太好了。
无论如何,主要问题发生在下面修改后的代码的第 47 行。任何解决这些问题的帮助将不胜感激。
此代码段已被修改,以便更轻松地识别有问题的命令:
macos - 从 MacOS 上的进程访问 OneDrive 文件的权限被拒绝错误
在使用 /bin/launchctl load -w /Library/LaunchDaemons/ex.plist 启动进程的 Mac 上,尝试打开脱机 OneDrive 文件( Open -c 系统调用)。它返回 errno 13(权限被拒绝错误)。没有launchctl直接启动的进程或应用程序可以打开文件(打开文件将自动下载)。
为什么无法从launchctl 启动的进程无法打开文件?是否有任何配置可以使其在 OneDrive 或 plist 文件中发生,或者 OneDrive 明确不允许此类进程打开文件?
macos - Mac launchDaemon 服务重复启动我的 bash 脚本
我一直在设置一个启动守护进程,它可以按需启动一个 bash 脚本。但是,一旦我加载启动代理并通过套接字进行通信,它就会每 10 秒运行一次我的 bash 脚本。我什至在 plist 中将 KeepAlive 标志设置为 false 并在 bash 脚本中添加了延迟,但它仍然继续运行。
当我与套接字连接时,如何将其设置为仅运行一次。
列表文件:
bash 脚本文件:
bash - LaunchAgent 服务退出并出现异常代码:1
我一直在尝试创建一个 LaunchDaemon 或 LaunchAgent(在 Catalina 中)来运行 bash 脚本,但没有成功。当我使用launchctl加载plist并且它从不执行shell脚本时,控制台只记录“服务退出并出现异常代码:1”。如果我手动运行 shell 脚本,则会按预期执行。
列表:
外壳脚本:
理想情况下,我会直接在 LaunchAgent 或 LaunchDaemon 中运行 find 命令,而不必使用单独的 shell 脚本,但我也尝试过,但它以同样的方式失败。
macos - macOS launchDaemon 尝试访问不需要完整磁盘访问权限的文件
我有一个从 launchDaemon plist 文件运行的 mach-o 可执行文件,并且正在使用 unix 域套接字与其他进程通信。在 /tmp 中创建的支持此套接字的文件。但是,这会导致可执行文件无法读取文件,除非获得完整的磁盘访问权限。
我想找到套接字文件的位置,该文件共享给所有进程并且不需要完整的磁盘访问权限。可执行文件位于/Library/Application Support/myProj/bin/exec_file
有这样的位置吗?也许我可以使用可执行文件本身的相同位置吗?
macos - macos ssh LaunchDaemons 已禁用
我尝试将我的 mba(mac book air)用作远程无头 linux。
令人讨厌的是每次重新启动后,我都无法远程 ssh 进入它,直到我手动登录。
重启后,ping 正常,表示网络、wifi 正常。
端口 22 不可访问,这意味着 ssh 守护程序未运行。
我确实运行了一些命令行命令,但是重新启动后,仍然无法通过 ssh 访问
我谷歌,有人说更改此设置,将禁用更改为假。
但保存后,文件内容会自动重置,变回true。
我的 macOS 信息: