3 votes

Ouverture d'une image de disque OS X avec un agent launchd pendant que l'affichage est en veille

J'ai créé un agent launchd qui ouvre une image disque sparse non protégée par mot de passe (et monte son volume solitaire) quotidiennement à 2h45 en préparation pour que le logiciel de sauvegarde écrive sur le volume. Le fichier plist de l'agent launchd est enregistré dans ~/Library/LaunchAgents/. Voici les paramètres du fichier plist :

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

Tant que l'écran de l'ordinateur est allumé, l'agent fonctionne comme prévu, ouvrant l'image disque et montant son volume à l'heure spécifiée dans l'agent de lancement. En revanche, si l'écran est en veille à l'heure spécifiée dans l'agent de lancement, l'image disque ne s'ouvre pas tant que l'écran n'est pas réveillé (même si cela se produit plusieurs heures plus tard), à ce moment-là l'image disque s'ouvre immédiatement et monte son volume. Le même phénomène se produit si je remplace la commande hdiutil attach /chemin/vers/MyDiskImage.sparseimage par open /chemin/vers/MyDiskImage.sparseimage, ou si je place la commande dans un script shell exécutable séparé que l'agent de lancement exécute. De plus, même si l'écran est en veille lorsque le problème décrit ci-dessus se produit, l'ordinateur lui-même est allumé. J'ai également testé le fait que l'agent de lancement exécute un script shell exécutable bidon (echo $(date)) au lieu de hdiutil, et cela s'exécute normalement même lorsque l'écran est en veille.

Il semble donc que le problème survient spécifiquement lors de la tentative d'ouverture d'une image disque à partir d'un agent de lancement launchd lorsque l'écran de l'ordinateur est en veille. Pourquoi l'état de veille ou d'éveil de l'écran a-t-il un impact sur l'ouverture d'une image disque ? Comment puis-je contourner ce problème ?

Je vous remercie pour toute aide concernant ce problème déroutant. (J'utilise un ordinateur portable MacBook Pro sous OS X 10.8.2 Mountain Lion.)

1voto

Graham Miln Points 39606

Il est probable que votre MacBook soit en veille lorsque launchd est programmé pour exécuter votre commande de montage de disque. launchd ne change pas son comportement en fonction de l'état de l'écran.

Votre tâche launchd s'exécutera tant que :

  • le Mac est éveillé
  • la tâche launchd est active
  • vous êtes connecté (le ticket de la tâche se trouve dans ~/Bibliothèque/)

Utilisez les journaux de débogage de pmset pour savoir si votre Mac était éveillé ou endormi. La commande suivante affichera un journal de tout ce que pmset sait :

pmset -g everything

Vérifiez également le fichier system.log pour les messages liés à votre tâche launchd échouée. Si un problème est rencontré, launchd enregistrera un message.

Applications > Utilitaires > Console.app > system.log

Le module Économiseur d'énergie de Mac OS X inclut la possibilité d'allumer ou de réveiller votre Mac à une heure prédéfinie. Vous pouvez utiliser cette fonction pour réveiller votre Mac une minute avant que votre tâche launchd ne soit prévue.

Préférences Système.app > Économiseur d'énergie > Planification…

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X