macos - 在显示器休眠时使用 launchd 代理打开 OS X 磁盘镜像

标签 macos unix launchd

我创建了一个 launchd 代理,它每天凌晨 2:45 打开一个不受密码保护的稀疏磁盘镜像(并安装其单个卷),为备份软件写入该卷做好准备。 launchd 代理的 plist 文件保存在 ~/Library/LaunchAgents/ 中。以下是 plist 文件的参数:

Label: my.DiskImageOpener
KeepAlive: NO
RunAtLoad: NO
StartCalendar:
    Hour: 2
    Minute: 45
ProgramArguments:
    hdiutil
    attach
    /path/to/MyDiskImage.sparseimage

只要计算机的显示屏处于唤醒状态,代理就会按照宣传的方式工作,打开磁盘镜像并在启动代理中指定的时间安装其卷。另一方面,如果显示器在启动代理中指定的时间处于 sleep 状态,则磁盘镜像将无法打开,直到显示器从 sleep 中唤醒(即使是几个小时后),此时磁盘镜像会立即打开并安装其音量。如果我用 open/path/to/MyDiskImage.sparseimage 替换 hdiutil attacj/path/to/MyDiskImage.sparseimage 命令,或者将该命令放在启动代理执行的单独的可执行 shell 脚本。

如何让启动代理在显示器休眠时打开磁盘镜像并挂载其卷?

我使用的是运行 OS X 10.8.2 Mountain Lion 的 MacBook Pro 笔记本电脑。感谢您针对此问题提供的任何帮助。

最佳答案

我想我偶然发现了解决方案。只要我在“节能器”首选项 Pane 中将计算机设置为从不 sleep ,那么即使显示器处于 sleep 状态和/或硬盘驱动器在可能的情况下设置为 sleep 状态,启动代理也会成功运行,打开磁盘镜像并安装卷。令人费解的是,如果计算机设置为从不 sleep 以外的任何设置(即使它实际上可能是唤醒的),启动代理就会失败。

关于macos - 在显示器休眠时使用 launchd 代理打开 OS X 磁盘镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14429596/

相关文章:

objective-c - NSCombox的comboBoxSelectionDidChange值被延迟

linux - 将文件路由到 Linux 中的正确文件夹

regex - Perl、sed 或 awk 单行更改文件格式

unix - 如何删除包含用双引号括起来的字符串的单元格值的 CSV 文件的一列/多列

git - 使用 launchd 在 OS X 上启动 git-daemon

macos - Mac OS X 中的 Pthreads - 互斥锁问题

python - 使用 Python 共享内存的段错误

objective-c - Cocoa:在实时窗口调整大小期间更新 NSWindow 内容 View 之外的 View ?

python - crontab/Launchd : OS X User Permissions, 环境变量,Python Virtualenvs

apache2 - MacPorts Apache2 在启动时停止启动