我需要在 OS X 上创建一个程序包安装程序,用于处理两个已启动守护进程的安装:一个以 root 身份运行,另一个以当前用户身份运行。虽然这仅适用于非常小的内部部署,但我无法保证当前用户名是什么。我怎样才能:
或者
操作系统 X、10.8.x
我们使用 launchd plist 文件(在 /Library/LaunchDaemons 中)在计算机启动时启动服务器应用程序。如果要启动的应用程序不在系统卷上,而是在另一个内部卷上,则该磁盘并不总是及时安装,并且作业每 10 秒重新生成一次。
有什么方法可以等待该文件系统对象变得可用吗?(或许 ?)
谢谢,阿科斯
希望有人知道这个问题,我可以回答我的另一个问题。Launchagent 尝试过快地加载我的脚本,因此失败 - 我已将其 Nice 设置为 20,并将其他所有内容设置为最后,但在创建帐户时仍然太快。
cliclick如果系统未作为未知命令正确登录,该脚本将调用失败。所以,我的想法是这样的。
在脚本运行开始时cliclick -h显示帮助菜单。如果未知命令失败,请继续重复,直到成功为止,然后继续执行脚本的其余部分。
这是一种确保脚本在用户到达桌面之前不会运行的肮脏方法,我想不出更好的方法,但我也不知道如何实现它 - 所以 bash 脚本专家,我该如何实现循环cliclick -h直到成功然后继续脚本的其余部分?
由于launchdplist 格式中没有“Year”参数,如何创建一个只运行一次而不是一年一次的代理?
我在任何标题中都找不到 CFErrorDomainLaunchd。我使用 find 命令来 grep 10.11 SDK 中的每个头文件。
我也试过谷歌:
site:opensource.apple.com CFErrorDomainLaunchd
Run Code Online (Sandbox Code Playgroud)
当我尝试安装我的助手应用程序及其启动 plist 时,SMJobBless 将错误传回。
我很困惑,因为昨天的安装工作得很好。我在此决定比现在更频繁地检查我的代码。
Boolean success;
CFErrorRef error;
success = SMJobBless(
kSMDomainSystemLaunchd,
CFSTR("com.frescologic.FL2000.Uninstaller.UninstallerHelper"),
self->_authRef,
&error ); <-- This is CFErrorDomainLaunchd error 2
Run Code Online (Sandbox Code Playgroud)
我永远欠你的债。
我正在开发 - 或试图开发 - 驱动程序的卸载程序。它还将卸载用户空间程序以及 OS X 用于启动或停止该用户空间程序的 LaunchAgent plist。
我有一个 systemd 服务脚本,我想将其转换为 launchd 服务脚本以用于 macOS。我该如何处理这个问题?
Microsoft 已经定义了IHostLifetimeWorkerServices 在不同平台上作为服务运行的接口。(您可以dotnet new worker在控制台中创建一个 Worker Service 项目)。
如果你想运行它们的系统服务,您可以使用微软的扩展systemd和Windows服务(见的NuGet Windows服务和Systemd)。
是否已经有针对 MacOS 的实现(例如 launchd),或者如果我也想通过我的服务支持 MacOS,我是否需要为自己实现?
Cocoa(和Mac OS X)中安排程序运行的最佳方法是什么:
除了调度之外,如果用户删除应用程序,也应该很容易取消调度程序并且不会导致错误.
本质上,该程序是一个卫星命令行可执行文件,放在同一个.app包中的主应用程序文件旁边.该程序的目的是在用户的主目录(内部~/Library/Application Support/MyApp)中进行一些后台数据更新.
这是crontab一个很好的候选人吗?该man页面crontab表示该功能已被吸收launchctl,但我似乎无法找到如何安排特定时间来运行该实用程序.
谢谢.
我正在尝试使用我的OS X桌面设置内部git服务器(主要作为测试用例).当涉及SSH密钥时,一切正常,但我目前正在尝试使用git-daemon进行只读克隆.如果我在终端中启动git-daemon:
sudo -u git git-daemon --basepath=/Users/git/repos/ --export-all
Run Code Online (Sandbox Code Playgroud)
然后一切正常,例如
git clone git://localhost/My_Project.git
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用launchd进行设置时,它会拒绝所有请求.我正在使用这个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>git</string>
<key>UserName</key>
<string>git</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/path/to/git-daemon</string>
<string>--base-path=/Users/git/repos/</string>
<string>--export-all</string>
</array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
如果我尝试克隆My_Project,则会收到以下错误:
Cloning into My_Project...
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
令人沮丧的是,我相信这曾经有用,所以问题可能与我的plist文件或者launchd的使用关系不大,而且更多的是做任何可能已经改变的网络设置.任何建议将不胜感激.
抱歉,如果这更像是一个系统管理员问题,但我认为开发人员可能会有一些经验.
更新:如果存在repo,控制台将报告以下错误:
git[431]
error: cannot run upload-pack: No such file or directory
Run Code Online (Sandbox Code Playgroud) 我使用appscript编写了一个python脚本来跟踪我当前活动的窗口.我通过launchd运行它,但是当我这样做时它无法导入appscript.我已将plY中的PYTHONPATH设置为launchd,但我认为launchd不是在site-packages中读取.pth文件.有没有办法让它做到这一点?
我的脚本在这里:https://github.com/katylava/macwintracker
这是推出的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.katylavallee.wintracker</string>
<key>ProgramArguments</key>
<array>
<string>/Users/kyl/Library/Application Support/com.katylavallee.wintracker/wintracker.py</string>
<string>1</string>
<string>1</string>
</array>
<key>Environment Variables</key>
<dict>
<key>PYTHONPATH</key>
<string>/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages</string>
</dict>
<key>StandardErrorPath</key>
<string>/Users/kyl/Library/Logs/com.katylavallee.wintracker/wintracker_err.log</string>
<key>StandardOutPath</key>
<string>/Users/kyl/Library/Logs/com.katylavallee.wintracker/wintracker.log</string>
<key>StartInterval</key>
<integer>3</integer>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
而错误:
Traceback (most recent call last):
File "/Users/kyl/Library/Application Support/com.katylavallee.wintracker/wintracker.py", line 5, in <module>
from appscript import app, its
ImportError: No module named appscript
Run Code Online (Sandbox Code Playgroud)
python脚本从命令行运行良好.