launchd semble ignorer StartCalendarInterval sur Yosemite


9

J'ai essayé de mettre à jour Homebrew à temps avec launchd. Mon fichier plist est présenté ici:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>ms.liu.homebrew.update</string>
  <key>UserName</key>
  <string>LiuMS</string>
  <key>ProcessType</key>
  <string>Background</string>
  <key>EnvironmentVariables</key>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/brew</string>
    <string>update</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>20</integer>
    <key>Minute</key>
    <integer>0</integer>
  </dict>
  <key>StandardOutPath</key>
  <string>/usr/local/logs/ms.liu.homebrew.update.out</string>
  <key>StandardErrorPath</key>
  <string>/usr/local/logs/ms.liu.homebrew.update.err</string>
</dict>
</plist>

Cela fonctionne d'une manière ou d'une autre: je peux exécuter launchctl start ms.liu.homebrew.updatemanuellement pour mettre à jour mon Homebrew. Cependant, launchd n'exécute pas ce service périodiquement: les dernières modifications apportées au fichier vers lequel stdout est redirigé il y a deux jours.

J'ai essayé d'obtenir des informations sur ce service mais je n'ai rien obtenu:

> launchctl print user/%MyPID%/ms.liu.homebrew.update`` 
Could not find service "ms.liu.homebrew.update" in domain for uid: %MyPID%

Il semble que je n'ai pas réussi à charger mon service. Comment? Je l'ai utilisé launchctl loadmais il semble qu'il soit déprécié. La page de manuel recommande plutôt le bootstrap:

> launchctl bootstrap user/%MyPID% %Path-to-plist%
> %Path-to-plist%: Service cannot load in requested session

Que devrais-je faire? Comment utiliser correctement launchctl bootstrapet launchctl print?

J'utilise OS X Yosemite GM Candidate 1 sur MacBookPro avec écran Retina (2013).

Réponses:


2

Je commence à peine à travailler sur ces choses, donc cette réponse est provisoire - mais j'espère que c'est plus utile que pas de réponse du tout. (Je l'aurais laissé en commentaire si j'avais assez de représentants.)

Cette liste est-elle dans votre ~/Library/LaunchAgentsannuaire? Il semble que ceux-ci soient démarrés dans votre guidomaine, pas dans votre userdomaine. Vous pouvez donc faire:

launchctl print gui/%UID%/ms.liu.homebrew.update

et ça devrait marcher. (Est-ce que c'est?)

Vraisemblablement, la raison pour laquelle vous ne pouvez pas l'amorcer dans le userdomaine est qu'il est déjà amorcé dans le guidomaine.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.