Macos 在显示器处于休眠状态时,使用已启动的代理打开OS X磁盘映像
我创建了一个Macos 在显示器处于休眠状态时,使用已启动的代理打开OS X磁盘映像,macos,unix,launchd,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
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
只要计算机的显示器处于唤醒状态,代理就会按照广告的方式工作,在launch agent中指定的时间打开磁盘映像并装入其卷。另一方面,如果在launch agent中指定的时间显示器处于休眠状态,则磁盘映像将无法打开,直到显示器从休眠状态唤醒(即使是几个小时后),此时磁盘映像将立即打开并装入其卷。如果我将hdiutil attachj/path/to/MyDiskImage.sparseimage
命令替换为open/path/to/MyDiskImage.sparseimage
,或者将该命令放在启动代理执行的单独可执行shell脚本中,则会出现相同的现象
如何让launch agent在显示器处于休眠状态时打开磁盘映像并装载其卷
我正在使用运行OS X 10.8.2 Mountain Lion的MacBook Pro笔记本电脑。感谢您对这个问题的帮助。我想我无意中找到了解决方案。只要我在“节能器”首选项窗格中将计算机设置为从不睡眠,那么即使显示器处于睡眠状态和/或硬盘驱动器在可能的情况下设置为睡眠状态,launch agent也会成功运行,打开磁盘映像并装入卷。令人费解的是,如果计算机被设置为“从不睡眠”(即使它实际上可能处于唤醒状态)以外的任何设置,则启动代理将失败。是整个计算机处于睡眠状态,还是仅显示器处于睡眠状态?如果计算机处于休眠状态,则不会进行任何处理(启动作业、备份等)。(好的,有一个例外:)因为这是一个非常具体的MacOS问题,为什么可能会有更好的运气。否则,我建议将
programmarguments
替换为一个shell脚本,该脚本回显一些调试行(例如echo将在$(date)
启动hdiutil),然后调用hdiutil
。这至少可以告诉您hdiutil是否挂起,或者启动代理是否根本没有被调用。(1)只是显示器处于休眠状态。电脑是醒着的。所以这与显示器处于休眠状态有关。(2) 我尝试了一个echo$(date)
调试命令(作为一个单独的可执行shell脚本),而launch agent即使在显示器处于休眠状态时也正确地执行了该命令。因此,如果launch agent试图在显示器处于休眠状态时打开磁盘映像,则可能会出现问题。感谢您提出这两个有用的建议。我很高兴按照您的建议将此内容提交到apple.stackexchange.com。