标签: launchd

Bash - 在我收到信号之前我该如何闲置?

我有一个startd运行的脚本启动服务器,然后告诉它在launchd将其关闭时(优先应该在关闭时)正常退出.我的问题:在获得信号之前,告诉脚本空闲的适当的惯用方法是什么?我应该只使用while-true-sleep-1循环,还是有更好的方法来做到这一点?

#!/bin/bash

cd "`dirname "$0"`"

trap "./serverctl stop" TERM
./serverctl start

# wait to receive TERM signal.
Run Code Online (Sandbox Code Playgroud)

bash signals launchd

10
推荐指数
2
解决办法
5871
查看次数

使Mac OSX launchctl在启动时以root身份启动进程

我的问题是如何在重启后使用具有root权限的launchd start创建MacOSX守护进程?

我正在编写一个内部使用的应用程序来阻止访问网站.它是用python编写的,并修改/ ect/hosts文件以禁用或启用列出的URL.主要应用程序是在django中,我创建了一个python twisted守护程序,它执行/ etc/hosts文件的实际修改,因为root访问权限是必需的.

我创建了一个plist文件,它可以处理一个小问题.重新启动后,守护进程具有正常的登录权限,而不是root权限.

解决方法是使用我的正常权限停止进程,然后使用sudo启动进程.

launchctl unload /Library/LaunchAgents/com.balanceinfosystems.socialshields.twisted.plist 
sudo launchctl load /Library/LaunchAgents/com.balanceinfosystems.socialshields.twisted.plist 
Run Code Online (Sandbox Code Playgroud)

plist文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.balanceinfosystems.socialshields.twisted</string>
    <key>Program</key>
    <string>/source/social_shields/social_shields_twisted.py</string>
    <key>KeepAlive</key>
    <true/>
  </dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

macos daemon launchd

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

iPhone SDK奇怪的控制台消息launchd_core_logic.c

我正在iPhone上运行该应用程序的发布版本,它运行正常.XCode调试器中没有错误消息:

Running…
Switching to thread 11779
Switching to thread 11779
sharedlibrary apply-load-rules all
(gdb) continue
Switching to thread 12291
Switching to thread 11779
Switching to thread 13059

Debugger stopped.
Program exited with status value:0.

但是,当通过管理器连接到iPhone时,我在iPhone的控制台中看到这些消息:

WWed Oct  7 15:37:01 unknown com.apple.launchd[1] : (UIKitApplication:com.blah.blah[0x830c]) Bug: launchd_core_logic.c:2649 (23909):10
Wed Oct  7 15:37:01 unknown com.apple.launchd[1] : (UIKitApplication:com.blah.blah[0x830c]) Working around 5020256. Assuming the job crashed.
Wed Oct  7 15:37:01 unknown com.apple.launchd[1] : (UIKitApplication:com.blah.blah[0x830c]) Job appears to have crashed: Segmentation fault
Wed Oct  7 15:37:01 …

iphone debugging sdk launchd

9
推荐指数
2
解决办法
4269
查看次数

OSX推出了针对节点永远进程的plist

我正在尝试为我的节点服务器编写一个launchd.plist文件.我正在使用永远运行我的节点服务器.我希望服务器在启动时启动.我还想等待mongodb launchd plist先行.

我使用自制软件安装了mongobb,它已经附带了launchd.plist.我执行了以下操作:

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
Run Code Online (Sandbox Code Playgroud)

mongodb的plist是:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>homebrew.mxcl.mongodb</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/mongodb/mongod</string>
    <string>run</string>
    <string>--config</string>
    <string>/usr/local/etc/mongod.conf</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>KeepAlive</key>
  <false/>
  <key>WorkingDirectory</key>
  <string>/usr/local</string>
  <key>StandardErrorPath</key>
  <string>/usr/local/var/log/mongodb/output.log</string>
  <key>StandardOutPath</key>
  <string>/usr/local/var/log/mongodb/output.log</string>
  <key>HardResourceLimits</key>
  <dict>
    <key>NumberOfFiles</key>
    <integer>1024</integer>
  </dict>
  <key>SoftResourceLimits</key>
  <dict>
    <key>NumberOfFiles</key>
    <integer>1024</integer>
  </dict>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

如果我关闭计算机并重新启动mongodb应该启动它.

但是我的节点服务器没有启动.有任何想法吗?

<?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>com.test.app</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/forever</string>
            <string>-a</string>
            <string>-l</string>
            <string>/var/log/app/app.log</string>
            <string>-e</string>
            <string>/var/log/app/app_error.log</string> …
Run Code Online (Sandbox Code Playgroud)

macos launchd node.js osx-mountain-lion forever

9
推荐指数
3
解决办法
8368
查看次数

有没有办法在launchd overrides.plist上更新SMLoginItemBookmarks数据

我正在开发一个大多数用户选择"在登录时启动"的OS X应用程序,这是您在菜单栏中找到的那种.

为了在登录时启动它,我正在使用SMLoginItemSetEnabled启动LoginHelper应用程序来打开主应用程序,如本教程所述.

该应用程序无法启动登录时只为少数用户.

我无法重现这个或跟踪原因,但我发现(在用户的机器上):

在应用程序登录时删除/Root/_com.apple.SMLoginItemBookmarks/[myapp]/Root/[myapp]打开/var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist然后重置启动修复了该问题.此外,我们对文件进行了差异化Data,书签上的内容也发生了变化.

作为参考,我在这里找到了关于overrides.plist的信息.

由于该应用程序同时具有Mac App Store和直接下载版本,因此我怀疑应用程序的多个副本设置为自动登录时启动可能是导致失败的原因,也许这些"书签"正在尝试打开另一个实例应用程序,可能会或可能不会被删除.

现在问题,只要这个应用程序需要保持沙盒:

  • 有没有办法在overrides.plist书签上更新该数据?
  • 有没有办法从overrides.plist中删除一个自己的应用程序来开始清理?
  • 这可能是一个已知问题吗?
  • 关于为什么书签似乎没有任何意义或如何解决它的任何其他建议将不胜感激.

注意:这是我在StackOverflow上的第一个问题,如果我没有遵循一些建议的礼节,请原谅.

macos objective-c launchd

9
推荐指数
1
解决办法
474
查看次数

SMJobBless因CFErrorDomainLaunchd Code 9而失败

有人知道那个错误代码是什么意思吗?我通过此返回码值获得SMJobBless错误.

Failed to bless helper: Error Domain=CFErrorDomainLaunchd Code=9 "The operation couldn’t be completed. (CFErrorDomainLaunchd error 9.)"
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索,在博客文章中查找答案,在Apple Docs中,在那里找不到答案是什么以及如何解决它.人们说(在一些支持论坛上,重新安装OS X对他们有帮助).

几周以前,我已经在我正在进行的项目中发生了这件事,唯一能帮助我解决问题的是改变我帮助工具的名称.现在又发生了.

同时我的代码在其他计算机上工作,只有我的工作站受此问题的影响.

更新: 重命名后,它再次起作用.现在我的系统上有两个帮助工具包标识符"禁止":-(

更新2: 它也发生在其他计算机上:-(

macos cocoa xpc launchd smjobbless

9
推荐指数
2
解决办法
1875
查看次数

MacOS:手动强制守护进程启动

我在/ Library/LaunchDaemon /中创建了一个plist文件

运行它的计算机无法重新启动(服务器事物),它正在运行MacOS Tiger.我希望以下命令可以完成这项工作,但它声明它并不意味着直接运行:

launchd /Library/LaunchDaemon/parallel.plist
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一目标?谢谢!

unix macos daemon launchd

8
推荐指数
1
解决办法
8749
查看次数

如何在launchd plist中访问环境变量

我有一个launchd per-user代理.在它的.plist中,我想使用$HOME环境变量.

可能吗?

(它是"程序"键,我想将其定义为"$ HOME/bin/myscript")

macos launchd

8
推荐指数
2
解决办法
2460
查看次数

我应该如何清理launchdutput或StandardError日志?

我有一个作为launchd代理运行的程序,我有stdout和stderr使用StandardErrorPathStandardOutputPath键发送到日志文件.我非常热衷于将stdout/stderr记录在某个地方,而且看起来像启动它设置这将是明智的事情.

(我的目的是建议一个文件~/Library/Logs/作为一个好的设置.然后你可以很容易地看到Console.app中的输出.)

我注意到的一点是,launchd似乎永远不会清理这些日志!我希望它可以在每次重启时清除日志,或者每隔几天,或者其他什么东西 - 但似乎没有.几周后,我有一个7MByte的22,000行日志文件,几乎没有一个是相关的.(你不太关心在上次重启之前发生的任何事情,事实上你不太可能关心过去15分钟内没有发生的事情.)

我能做些什么来阻止文件无限增长吗?

macos logging diskspace launchd

8
推荐指数
0
解决办法
405
查看次数

在 Mac OSX 中运行 python 脚本 launchd 权限问题

我有一个简单的 python 脚本,它从我的下载文件夹中移动文件。当我通过终端运行该脚本时,该脚本运行良好。当它通过 launchd 运行时会出现问题:

Traceback (most recent call last):
  File "/Users/ben/Project/Automation/CleanDownload.py", line 11, in <module>
    for f in listdir(downloadFolder):
OSError: [Errno 1] Operation not permitted: '/Users/ben/Downloads/'
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

python macos launchd macos-catalina

8
推荐指数
2
解决办法
4928
查看次数