Abrir una imagen de disco OS X con un agente launchd mientras la pantalla está inactiva

3

Creé un agente launchd que abre una imagen de disco dispersa no protegida por contraseña (y monta su volumen solitario) diariamente a las 2:45 AM en preparación para que el software de respaldo escriba en el volumen. El archivo plist del agente launchd se guarda en ~/Library/LaunchAgents/ . Aquí están los parámetros del archivo plist:

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

Mientras la pantalla de la computadora esté activa, el agente funciona como se anuncia, abriendo la imagen del disco y aumentando su volumen a la hora especificada en el agente de inicio. Por otro lado, si la pantalla está inactiva a la hora especificada en el agente de inicio, la imagen del disco no se abre hasta que la pantalla se despierta de la suspensión (incluso varias horas después), momento en el que la imagen del disco se abre inmediatamente. y monta su volumen. El mismo fenómeno ocurre si sustituyo el comando hdiutil attach /path/to/MyDiskImage.sparseimage con open /path/to/MyDiskImage.sparseimage , o si coloco el comando en un script de shell ejecutable separado que ejecuta el agente de inicio. Además, aunque la pantalla esté inactiva cuando se produce el problema descrito anteriormente, la computadora está despierta. Además, probé que el agente de inicio ejecutara un script de shell ejecutable ficticio ( echo $(date) ) en lugar de hdiutil , y se ejecuta normalmente incluso cuando la pantalla está inactiva.

Por lo tanto, parece que el problema se produce específicamente al intentar abrir una imagen de disco desde un agente de inicio launchd mientras la pantalla del equipo está inactiva. ¿Por qué el estado de activación / desactivación de la pantalla tiene algún efecto al abrir una imagen de disco? ¿Cómo puedo evitar este problema?

Estoy agradecido por cualquier ayuda con este problema desconcertante. (Estoy usando una computadora portátil MacBook Pro con OS X 10.8.2 Mountain Lion.)

    
pregunta scolfax 21.01.2013 - 04:39

1 respuesta

1

Es probable que su MacBook esté inactivo cuando launchd está programado para ejecutar su comando de montaje en disco. launchd no cambia su comportamiento debido al estado de la pantalla.

Su trabajo launchd se ejecutará siempre que:

  • la Mac está despierta
  • el trabajo launchd está activo
  • ha iniciado sesión (la ficha de trabajo está en ~ / Library /)

Utilice registros de depuración de pmset para saber si su Mac está despierta o dormida. El siguiente comando imprimirá un registro de todo lo que pmset conoce:

pmset -g everything

Asegúrese de revisar el system.log para los mensajes relacionados con su trabajo fallido. Si se encuentra un problema, launchd registrará un mensaje.

Applications > Utilities > Console.app > system.log

Mac OS X Energy Saver incluye la capacidad de encender o despertar tu Mac a una hora predefinida. Es posible que desee utilizar esta capacidad para activar su Mac un minuto antes de que se programe su trabajo launchd .

System Preferences.app > Energy Saver > Schedule…
    
respondido por el Graham Miln 14.07.2013 - 15:32

Lea otras preguntas en las etiquetas