Apertura di un'immagine disco OS X con un agente launchd mentre il display sta dormendo

3

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.)

    
posta scolfax 21.01.2013 - 04:39
fonte

1 risposta

1

Probabilmente il tuo MacBook è addormentato quando è pianificato launchd per eseguire il comando di montaggio su disco. launchd non modifica il suo comportamento a causa dello stato della visualizzazione.

Il tuo lavoro di avvio verrà eseguito fino a:

  • il Mac è attivo
  • il lavoro di avvio è attivo
  • hai effettuato l'accesso (il job ticket è in ~ / Library /)

Utilizza i log di debug di pmset per scoprire se il tuo Mac era sveglio o addormentato. Il seguente comando stamperà un registro di tutto ciò che pmset conosce:

pmset -g everything

Assicurati di controllare system.log per i messaggi relativi al tuo lavoro di avvio non riuscito. Se si verifica un problema, launchd registrerà un messaggio.

Applications > Utilities > Console.app > system.log

Mac OS X Energy Saver include la possibilità di accendere o riattivare il Mac in un momento predefinito. Potresti voler utilizzare questa capacità per riattivare il tuo Mac un minuto prima che il tuo lavoro launchd sia pianificato.

System Preferences.app > Energy Saver > Schedule…
    
risposta data 14.07.2013 - 15:32
fonte

Leggi altre domande sui tag