Ho creato un agente launchd
che apre un'immagine disco sparsa non protetta da password (e monta il suo volume solitario) ogni giorno alle 2:45 AM in preparazione del software di backup da scrivere sul volume. Il file plist dell'agent launchd
viene salvato in ~/Library/LaunchAgents/
. Ecco i parametri del file plist:
Label: my.DiskImageOpener
KeepAlive: NO
RunAtLoad: NO
StartCalendar:
Hour: 2
Minute: 45
ProgramArguments:
hdiutil
attach
/path/to/MyDiskImage.sparseimage
Finché il display del computer è attivo, l'agente funziona come pubblicizzato, aprendo l'immagine del disco e montando il volume al momento specificato nell'agent di lancio. D'altra parte, se il display è addormentato all'ora specificata nell'agente di lancio, l'immagine del disco non si apre fino a quando il display non si riattiva dallo stato di sospensione (anche se questo è parecchie ore dopo), a quel punto l'immagine del disco si apre immediatamente e monta il suo volume. Lo stesso fenomeno accade se sostituisco il comando hdiutil attach /path/to/MyDiskImage.sparseimage
con open /path/to/MyDiskImage.sparseimage
, o posiziono il comando in uno script di shell eseguibile separato che viene eseguito dall'agente di lancio. Inoltre, anche se il display è addormentato quando si verifica il problema sopra descritto, il computer stesso è attivo. Inoltre, ho verificato che l'agente di lancio eseguisse uno script fittizio di shell eseguibile ( echo $(date)
) invece di hdiutil
, e si esegue normalmente anche quando il display è inattivo.
Quindi sembra che il problema si verifica in particolare quando si tenta di aprire un'immagine del disco da un agente di lancio launchd
mentre il monitor del computer è inattivo. Perché lo stato di visualizzazione dello stato di sleep vs wake ha qualche effetto sull'apertura di un'immagine del disco? Come posso aggirare questo problema?
Sono grato per qualsiasi aiuto con questo problema sconcertante. (Sto usando un laptop MacBook Pro con OS X 10.8.2 Mountain Lion.)