标签: launchd

如何在登录前强制加载 Mac OS X kext?

我有一个想要在启动时加载的 kext。它不需要在过程中特别早地加载,但我希望在用户登录之前加载它。

有问题的 kext 是 InsomniaT,并且与设备驱动程序不同,没有任何东西会自动请求将其加载到内核中,因此将它放在 /System/Library/Extensions 中不会做任何事情。

做到这一点的最佳方法是什么?

boot kext launchd macos

6
推荐指数
2
解决办法
1万
查看次数

如何摆脱日志中的 com.apple.launchd.peruser 错误?

我的控制台日志中出现重复错误,看起来(基本上)如下所示:

10-09-29 10:06:08 AM com.apple.launchd[1] (com.apple.launchd.peruser.501[51581]) getpwuid("501") failed
10-09-29 10:06:08 AM com.apple.launchd[1] (com.apple.launchd.peruser.501[51581]) Exited with exit code: 1
Run Code Online (Sandbox Code Playgroud)

这台机器是使用迁移助手设置的,从我的 UID 为 501 的机器开始,但这里是 505。当然,我有相同的用户名和组集,但是...

那么,这个 peruser launchd 工具在哪里配置,以便我可以禁用导致此错误消息的守护程序?

launchd migration-assistant macos

6
推荐指数
3
解决办法
4万
查看次数

如何在 Mac OS X(或 iOS 等)上永久“重新设置”进程?

我使用了一个很好的(免费)进程管理器,称为ATMonitor for Mac OS X,它有很多很酷的隐藏功能,其中之一是能够单击正在运行的进程并将“renice”从 +20(较低优先级)设置为-20(最高优先级)。

最好的部分是它在重新启动之间保持不变。所以你想让 XYZ 一直得到充分的关注,你设置一次就完成了。

我想在运行特定守护程序的 iPad 上做同样的事情(renice 进程),但我不知道如何永久设置 renice。

我可以做一次,它工作正常,但设置在重新启动时丢失。我在某处阅读。

现在,对于永久重置进程的优先级,这不能直接完成。但是,您可以使用一个 shell 脚本来伪造它,该脚本启动应用程序然后立即使用它。给该脚本一个“.command”扩展名,它将在 GUI 中双击。不是很优雅,但它完成了工作。

但正如它所说,不是很优雅,我不认为这就是 ATMonitor 的做法。

我发现了这个问题,他们提供了一种方法来将其作为启动参数,但没有明显的方法将其保存为持久值。例如,如果程序不打算由launchd 启动。

我如何为每个可执行二进制文件设置一个永久的 renice 级别,独立于其 PID、何时、如何或为什么启动?

priority launchd process macos

6
推荐指数
2
解决办法
2万
查看次数

在 Mac OS X 上作为 LaunchDaemon 启动 Jenkins slave

我正在尝试slave.jar使用 Launch Daemon 在 Mac OS X 10.8.3 上启动 jenkins ,以便它在机器启动后立即运行。

但是我遇到了一个神秘的问题:LaunchDaemon正如我在日志文件中看到的那样,启动了奴隶

29.04.2013 14:57:06 hudson.remoting.jnlp.Main$CuiListener status
INFO: Locating server among [http://ci.****/]
29.04.2013 14:57:06 hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to ci.****:53930
29.04.2013 14:57:06 hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
29.04.2013 14:57:06 hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected
Run Code Online (Sandbox Code Playgroud)

但此后连接立即关闭:

29.04.2013 14:57:06 hudson.remoting.SynchronousCommandTransport$ReaderThread run
SCHWERWIEGEND: I/O error in channel channel
java.io.IOException: Unexpected termination of the channel
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:50)
Caused by: java.io.EOFException
    at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2576)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1295)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
    at hudson.remoting.Command.readFrom(Command.java:92)
    at hudson.remoting.ClassicCommandTransport.read(ClassicCommandTransport.java:59)
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:48)
29.04.2013 …
Run Code Online (Sandbox Code Playgroud)

mac launchd jenkins macos

6
推荐指数
1
解决办法
1万
查看次数

在 Mac OS X 上一个接一个守护进程启动一个守护进程

如何在系统启动时启动的两个守护进程之间创建依赖关系?

我想在系统启动时启动声纳,但它需要 mysql 服务器已经启动并运行。

我没有找到在 launchd plists 中定义进程依赖项的明确方法。

从启动的维基百科页面,有一个非常鼓舞人心的句子:

在启动启动期间最难管理的部分是依赖项。

声纳守护进程:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>WorkingDirectory</key>
    <string>/usr/local/Sonar/sonarinstall</string>
    <key>Label</key>
    <string>org.sonarsource.sonar</string>
    <key>KeepAlive</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>bin/macosx-universal-64/sonar.sh</string>
        <string>start</string>
    </array>
    <key>UserName</key>
    <string>server1</string>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>  
Run Code Online (Sandbox Code Playgroud)

MySQL守护进程:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>homebrew.mxcl.mysql</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/mysql/bin/mysqld_safe</string>
    <string>--bind-address=127.0.0.1</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/usr/local/var</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

mysql launchd macos

6
推荐指数
1
解决办法
4030
查看次数

com.apple.emond 不断重启

我的系统日志告诉我事件监视器不断重新启动,我不知道实际问题可能是什么。

系统日志:

Oct 19 21:03:44 funkymachinename emond[51201]: SetUpLogs: uid = 0 gid = 0
Oct 19 21:03:44 funkymachinename emond[51201]: SetUpLogs: opening /Library/Logs/EventMonitor/EventMonitor.error.log
Oct 19 21:03:44 funkymachinename com.apple.xpc.launchd[1] (com.apple.emond): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Run Code Online (Sandbox Code Playgroud)

/Library/Logs/EventMonitor/EventMonitor.error.log:

Event Monitor Started 2014-10-19 20:52:02 +0200
No rules found in /private/etc/emond.d/rules/, quitting....
Event Monitor Shutdown at 2014-10-19 20:52:02 +0200
Run Code Online (Sandbox Code Playgroud)

检查提到的文件夹:

~ $ ll /private/etc/emond.d/rules/
total 0
drwxr-xr-x  3 root  wheel  102 Aug 30 04:55 .
drwxr-xr-x  4 root  wheel …
Run Code Online (Sandbox Code Playgroud)

launchd osx-server macos

6
推荐指数
2
解决办法
7813
查看次数

重新启动时删除 OSX 的 /private/var/folders/* 是否安全?

想要/private/var/folders/*在 OS X 启动时通过创建一个launchd条目来清理它。(据我所知,OS X 不支持rc.conf rc.d- 一切都必须通过创建一个条目来完成launchd

这是一个类似的 问题。不幸的是,接受的答案是错误的,因为这里有守护进程(尤其是依赖于调用的守护进程mktemp)可以运行并且仍然打开文件 - 因此,您无法随时删除/private/var/folders/*. (正确地说,建议的“重启后”在一定程度上解决了问题 - 但并非完全如此。)

那么,问题是:在/private/var/folders/* 启动时删除文件是否安全?

(我可以想象一些需要重新启动的安装脚本(.kext 安装等)可以使用临时文件夹来存储一些重新启动后的安装数据 - 并且不希望在某些关键安装后通过删除必要的文件来锁定我的系统:) -这纯粹是我的猜测- 因此询问)。

  • 或者唯一安全的方法是删除超过 X 天的文件?
  • 或者安全自动清理临时文件/目录的另一个想法,/private/var/folders/*因为它不断增长......;(

boot launchd temporary-files macos

6
推荐指数
2
解决办法
2万
查看次数

防止应用程序在 OS X 中自动启动 - 所有要查看的地方都有哪些?

Mac 上的一个应用程序在启动时自动启动,但我不希望它启动。该应用程序本身无法防止这种情况发生。与其识别应用程序,我认为最好使用这个问题作为识别此类应用程序可以隐藏的所有位置的机会。

这是我到目前为止看过的地方,但我仍然没有找到它:

  • 帐户 - 登录项
  • Dock - 登录时打开
  • launchd - 循环浏览 Lingon 中的代理和守护程序的每个选项卡

其他想法?

boot launchd macos

5
推荐指数
1
解决办法
1614
查看次数

无法在 Mac 上使用 launchd 运行 Node.js 脚本

我正在尝试在我的 Mac(OSX 10.8.2 Mountain Lion)上每小时运行一个节点脚本。根据排名靠前的搜索结果,最好的方法是添加launchd启动代理。

出于某种原因,它似乎不起作用。

我编写了以下启动代理文件并将其保存为~/Library/LaunchAgents/agenttest.plist.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>KeepAlive</key>
        <dict>
            <key>SuccessfulExit</key>
            <false/>
        </dict>
        <key>Label</key>
        <string>protocol</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/node</string>
            <string>/Users/snorpey/PATH/TO/file.js</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>3600</integer>
    </dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

我通过launchctl load ~/Library/LaunchAgents/agenttest.plist在终端中运行来启动启动代理。

我还使脚本文件可执行,sudo chmod -x /Users/snorpey/PATH/TO/file.js并使用sudo chmod 777 /Users/snorpey/PATH/TO/file.js.

当我/usr/local/bin/node /Users/snorpey/PATH/TO/file.js在终端中运行时,脚本运行良好。

但是,它在运行时似乎不起作用launchd。我收到以下消息/var/log/system.log

Jan 15 22:32:46 snorpey com.apple.launchd.peruser.501[595] (agenttest[21625]): Exited with code: 1
Jan …
Run Code Online (Sandbox Code Playgroud)

launchd node.js osx-mountain-lion macos

5
推荐指数
2
解决办法
4675
查看次数

增加应用程序的优胜美地最大文件限制

我一直在尝试提高优胜美地的 maxfile 限制和 maxfileperproc 限制,但没有运气。我在 etc 文件夹中创建了一个 sysctl.conf 文件,它在通过 grep 显示时成功增加了值。

但是,如果我查看launchctl limit maxfiles,该值仍然不正确。

一些解决方案似乎使用 ulimit -n 来设置限制,但是在终端中时,我实际上无法使用它。它给了我“无效参数”或“未经授权的操作”的错误。我已经通过 bash_profile 脚本成功增加了 ulimit,但是由于应用程序是从应用程序运行的,而不是从 shell 运行的,所以它无关紧要。我还通过 root 用户成功地增加了 ulimit,但是当它被注销时,它不会保存更改。

理想情况下,我正在寻找像 launchd.conf 文件那样工作的东西,并且只是在重新启动时自动增加 launchctl limit maxfiles {#}。

有没有办法成功地做到这一点?也许使用像 Lingon 这样的 3rd 方,或者使用启动守护程序?

谢谢!

launchd daemon launchctl ulimit osx-yosemite

5
推荐指数
1
解决办法
6109
查看次数