问题标签 [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 - 在 Mac OS X 上停止 mongod 的干净方法是什么?
我正在运行 mongo 1.8.2 并尝试查看如何在 Mac 上彻底关闭它。
在我们的 ubuntu 服务器上,我可以使用以下命令从 mongo shell 干净地关闭 mongo:
但在我的 Mac 上,它不会杀死 mongod 进程。输出显示它“应该”关闭,但是当我 ps -ef | grep mongo 它向我展示了一个活跃的进程。此外,我仍然可以打开一个 mongo shell 并查询我的数据库,就像它从未关闭一样。
我的 db.shutdownServer() 在本地的输出是:
我知道我可以杀死这个过程,但我想更干净地完成它。
macos - 在 launchd 系统守护进程中使用钥匙串
我们有一个 launchd 守护进程,它从钥匙串内部存储用户名和密码。当我们尝试添加(使用 SecKeychainAddGenericPassword)删除(使用 SecKeychainFindGenericPassword 和 SecKeychainItemDelete)但我们无法获取使用 SecKeychainFindGenericPassword 设置的密码时,它可以工作。函数返回
守护进程已签名并以 root 身份运行。密码保存在系统钥匙串中。
当我们使用 sudo 从终端运行应用程序时,它可以工作。它能够访问密码。但是当它在launchd中运行时,它不起作用。有什么东西阻止我们在 launchd 中使用钥匙串吗?
谢谢,马克-艾蒂安
macos - Spotlight 无法打开:控制台显示:mds[pid] (Fatal) 服务器:mds 必须以 root 身份运行。退出
我关掉了聚光灯,对此非常彻底。太彻底了,我无法重新打开它。我需要从 Mac App Store 安装一个程序(并且 App Store 依赖于 mds),所以如果有人知道如何在没有 mds 的情况下安装 App Store 程序的信息(聚光灯),那就更好了。
所以我的问题是聚光灯抱怨它只能以root身份运行,但我无法终生弄清楚为什么它不是。据我了解, /System/Library/LaunchDaemons 中的启动守护进程会自动以 root 身份启动,只要它们具有正确的权限。该目录的每个文件都是 rw-rr。以下是我用来从 launchd 卸载/加载 Spotlight 的命令:
我还重命名了 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support 中的 mds 可执行文件,添加了一个 .bak 扩展名。
要重新加载它,我基本上撤消了这些步骤。但是它现在不工作。我在谷歌上搜索了错误,但没有骰子。我从 Snow Leopard 安装映像重新加载了 mds 二进制文件,没有做任何事情。我已经修复了 4-5 次权限并手动查找树以查看是否发现任何权限错误,但一切都是 root:wheel 755,就像我认为它应该在 Frameworks 文件夹中,而 rw-rr 在 LaunchDaemons文件夹。然而,mds 不断地向控制台发送消息说 mds[pid] (Fatal) Server: mds must be run as root。退出。
有人知道发生了什么吗?我现在不想重新格式化,因为我已经花了很长时间来设置这台电脑,我只想从 App Store 安装一个程序。
谢谢!
cocoa - 启动 Mac 上的应用程序
我需要在启动时运行我的应用程序。因此,当用户启动他的 Mac 并即将看到他的桌面时,我的应用程序需要启动。我将我的应用程序设置为以启动方式运行。我在启动进程的 plist 中使用 QueuedDirectories 标志。因此,如果我放置一个文件,它会自动启动。我看过这个问题 -如何在系统启动时启动应用程序?(Mac OSX,可可)。建议的答案是使用launchd。
我有两个问题——
在存在多个帐户的 Mac 中,该应用程序不会为其他用户(尚未安装它)启动。在 Windows 中,您可以为每个人安装程序。在 Mac 上是否可能发生类似的事情。如果是这样,我可以将队列目录方法与 launchd 一起使用。
也是在 Lion 中启动/登录时启动应用程序的正确方式。或者,Apple 是否在 Lion 中添加了任何新功能,以便以更智能的方式完成此操作。我抬头一看,一切似乎都指向launchd。
我的目标是雪豹和狮子。
objective-c - launchd:Mach 服务查找失败
通过launchd 获得root 权限的帮助工具无法建立到我的主程序的NSConnection。
当我使用 sudo 手动启动 HelperTool 时,连接有效,这证明我的服务很好售卖,并且问题来自于 launchd。
日志是:
为什么launchd 看不到我出售的 NSConnection ?
macos - 尝试使用 launchd .plist 文件运行 shell 脚本时权限被拒绝
我正在尝试创建一个新的启动代理文件,该文件将执行 shell 脚本以在 ftp 文件夹上执行备份。.plist 文件的内容如下:
backup.sh 文件如下:
当我通过终端执行时,backup.sh 文件运行得非常好,要求我输入密码然后下载文件夹。但是,在使用 launchd 时,我什至没有提示输入密码,我只是在错误日志文件中得到以下信息:
launchctl list 将 plist 的状态设为 1。 ~/etc/ssh_config PasswordConfirmation 为 1 .plist 文件位于 launchagents 文件夹中
干杯
macos - LaunchAgent 打开 FileMaker 脚本
我在 OS X 10.4.11 上使用 launchd 对 FileMaker 脚本进行类似 cron 的调度,这真是太棒了。(我在serverfault描述了我早期的工作经历。)起初我认为问题在于 FileMaker 脚本打开了一个 GUI,这对于 LaunchDaemon 来说似乎是禁止的。然后我把它改成了一个 LaunchAgent,它允许使用窗口资源,但仍然不行。
以下是一些没有意义的事情的清单:
如果您在手动加载任务后使用 launchctl 启动任务,那么一切正常。
sudo launchctl start my.script.name
如果您选择未来几分钟(而不是未来几个小时)的 StartInterval,然后加载 .plist,一切正常。(起初我以为这可能与屏幕保护程序有关——当 ss 执行时,某些东西会被垃圾收集或其他东西;但如果即使在 ss 启动之后也安排了它,它似乎也可以工作,只要它不是未来太远了。)
我将 FileMaker 程序的调用封装在一个 shell 脚本中,该脚本除了执行 FileMaker 程序外,还将时间戳写入日志文件。通过阅读这个日志文件,我可以验证,是的,shell 脚本确实是由 launchd 在适当的时间调用的。或者至少,几乎,因为:
日志显示了一些奇怪的东西:如果我安排在晚上 8:08 启动脚本,我会执行两次,彼此相隔几秒钟:
[Tue Jan 24 20:07:57 CST 2012] 执行脚本!
[Tue Jan 24 20:08:00 CST 2012] 执行脚本!
我已经走到了尽头——我已经阅读了相关的联机帮助页、Apple 技术文档以及 StackExchange 站点上的其他文章。我真的尽我所能完成了我的功课。任何可以帮助我的人都会有一些严重的因果报应。
再说一次,这里是 .plist,其中一些杂乱无章(XML 定义、日志信息)被编辑掉了。(请记住,这在手动加载时有效,所以我知道 plist 本身没问题。)
macos - 为什么 usleep 在启动时不起作用?
我有一个launchd
在系统启动(OS X)时运行的守护进程。我需要将守护程序的启动延迟 3-5 秒,但以下代码会在启动时立即执行,但在启动后会延迟正常:
如果我在系统启动后手动运行它,它会正确延迟。如果我让它launchd
在启动时启动,控制台日志显示在延迟之前和延迟之后之间没有延迟 - 它们在同一秒内执行。
如果我可以launchd
在启动后延迟后执行我的守护进程,那也很好,但我的阅读表明这是不可能的(也许我错了?)。
否则,我需要了解为什么 usleep 不起作用,以及我可以做些什么来修复它,或者我可以使用什么延迟来代替在启动过程的早期起作用。
execution - launchd 启动代理未执行命令
我在工作时在我的 Mac 上使用 Skype 和 Adium 客户端。我有两个脚本(Ruby,如果重要的话),start_chats
并且kill_chats
启动/终止两个应用程序。这些脚本都是可执行的,并且可以从命令行正常工作。我曾经在 Snow Leopard 中使用 cron 在预定时间运行这些脚本: start_chats
在 8:00 当我进入我的办公室时,并kill_chats
在 6:00 (18:00) 杀死它们(因此,将我从所有连接的帐户中注销) 00) 在我离开办公室后。
因为我最近买了一台装有 Lion 的新机器,所以 cron 的行为非常不稳定,而且通常根本不执行它的工作(我在同一个 crontab 中有其他工作)。因此,为了跟上技术的步伐,我决定尝试使用launchd
plist 对其进行重新设计。我已经阅读了许多“教程”以及如何构建 plist 来对我的脚本进行简单的基于时钟的执行。大多数这些教程的问题在于,它们并没有真正告诉您在创建 plist 后要做什么。这是我的示例plist(在这篇文章kill_chats
的帮助下构建):
是的,它被命名local.me.kill_chats.plist
了,我把它放在我的~/Library/LaunchAgents/
目录中。请注意,我也尝试过使用Program
密钥,但这也不起作用。如果我跑
它说列表已经加载,确实我可以看到它
但是当我的系统时钟达到 plist 中指定的时间时,我的kill_chats
脚本没有运行。当然我不是每次都等到 18:00 才测试,所以我把它改成比当前时间提前几分钟,但它仍然没有执行脚本。我什至尝试过Lingon(较旧的免费版本),但似乎没有任何效果。
难道我做错了什么?我的 plist 有问题吗?正如我所说,我浏览了许多不同的网站(甚至是大量 Stackexchange 帖子),我的列表似乎是正确的。我只是不确定如何让“它”“使用”我的列表。任何帮助将不胜感激。
osx-lion - 无法在 OS X Lion 上的启动/关机时启动工作
我遵循了一些在线指南,试图让一些无头虚拟机在我的 Mac 上的启动/关闭时自动启动/挂起。我根本无法让它工作。这是我第一次尝试让脚本在启动/关机时运行,所以可能是我遗漏了一些非常基本的东西,如果是这种情况,我深表歉意。
这些是我遵循的步骤:
- 创建了一个目录
/Library/StartupItems/HeadlessVM
在该目录中创建了两个文件:
HeadlessVM 的内容
StartupParameters.plist 的内容
/li>创建了我的脚本文件,它将执行这两个操作:
runvmheadless 的内容
suspendvmheadless 的内容
/li>到目前为止我的故障排除:
- 如果我从终端运行脚本,它们会按预期工作。
- 如果我运行
sudo /sbin/SystemStarter (start or stop) "HeadlessVM"
它也可以。 在控制台上,当我重新启动时,我只看到以下内容,不知道出了什么问题。
2/20/12 12:11:09.128 PM SystemStarter:在 OS X 启动/关闭 (100) 上运行/挂起无头虚拟机未成功完成
感谢任何帮助,谢谢。