Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在显示器处于休眠状态时,使用已启动的代理打开OS X磁盘映像_Macos_Unix_Launchd - Fatal编程技术网

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。