Je suis incapable de planifier un lancement périodique avec launchctl
/launchd
sur OS X (léopard). Fondamentalement, je ne peux pas trouver une liste étape par étape des instructions sur le Web et que l'approche intuitive ne fonctionne pas.
Les sync.plist
déposer:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.madrat.utils.sync</string>
<key>Program</key>
<string>rsync</string>
<key>ProgramArguments</key>
<array>
<string>-ar</string>
<string>/path/to/folder/</string>
<string>/path/to/backup/</string>
</array>
<key>StartInterval</key>
<integer>7200</integer>
</dict>
</plist>
J'ai mis ce script à l'intérieur du chemin ~/Library/LaunchAgents
.
Ensuite, j'ai enregistré le script utilisant
launchctl load ~/Library/LaunchAgents/sync.plist
Enfin, pour tester que cela fonctionne, je démarré le travail:
launchctl start net.madrat.utils.sync
- Rien ne s'est passé. Exécution manuelle La commande rsync
dans le terminal donne le résultat attendu.
Je suis assez sûr que le travail a été enregistré correctement parce que si j'essaie de démarrer un travail non existant, je reçois un message d'erreur (lequel i non Entrez la commande ci-dessus).
Qu'ai-je fait de mal?
lingon est un bon outil d'interface graphique pour gérer le lancement. Le projet semble être non pris en charge maintenant ... mais cela fonctionne toujours sur 10.5.x.
Mais à votre problème spécifique ... Avez-vous essayé
Sudo launchctl list
Cela vous dira si le .plist est en train de tirer correctement. Ça retournera 1 si le démon n'est pas lauching, et un '0' si cela réussit. Peut-être cherchez cela.
Chaque fois que je vois un "1", c'est généralement parce que j'ai mis le script au mauvais endroit, a créé une faute de frappe ou avoir défini des autorisations incorrectivement.
Aussi .... Redémarrez souvent .. j'ai vu
launchctl start
ne pas être efficace où un redémarrage était ..
En outre, en regardant votre question plus proche ... Pourquoi ne pas simplement mettre ce code RSYNC dans un script Bash ... et le coller à /usr/bin/
..... alors vous pourriez juste chmod+x
Ce fichier ... et simplifiez votre .plist à tirer ce script quand vous le souhaitez ....
essayez ceci, mes scripts fonctionnent sans utiliser la partie du programme, Just Programs Args ...
remplacer
<key>Program</key>
<string>rsync</string>
<key>ProgramArguments</key>
<array>
<string>-ar</string>
<string>/path/to/folder/</string>
<string>/path/to/backup/</string>
</array>
avec
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>rsync</string>
<string>-ar</string>
<string>/path/to/folder/</string>
<string>/path/to/backup/</string>
</array>