J'ai un travail assez simple que j'aimerais exécuter toutes les heures. Je pourrais le faire en utilisant cron
, mais j'ai pensé que j'utiliserais cela pour en savoir plus launchd
, car j'entends de bonnes choses à ce sujet. J'ai la man launchd.plist
page comme référence, mais je cherche quelque chose de plus basé sur la construction d'un exemple de travail.
19
cron
question, superuser.com ne serait-il pas le bon endroit? Commelaunchd
c'est la version d'Applecron
(et aussidaemontools
, et peut-être d'autres choses), je pensais que c'était ma meilleure option.Réponses:
launchd
exécute Daemons (/Library/LaunchDaemons
ou/System/Library/LaunchDaemons
) en tant que root et les exécutera, que les utilisateurs soient connectés ou non. Les agents de lancement (/Library/LaunchAgents/
ou~/Library/LaunchAgents/
) sont exécutés lorsqu'un utilisateur est connecté en tant qu'utilisateur. Vous ne pouvez pas utiliser setuid pour changer l'utilisateur exécutant le script sur les démons. Le/System
répertoire est réservé aux tâches Mac OS X, je vous recommande donc de placer voslaunchd
plists dans/Library
le~/Library
dossier ou dans le sens voulu .La première étape consiste donc à déterminer si vous créez un agent ou un démon.
La deuxième étape consiste à créer votre
.plist
fichier. Vous pouvez utiliser des programmes basés sur l'interface graphique tels que Lingon pour vous aider ou simplement utiliser votre éditeur de texte préféré:Un exemple
.plist
pour exécuter un script toutes les heures (StartInterval
ouStartIntervalCalendar
sont les clés que nous voulons -StartInterval
pour qu'un élément se produise toutes lesx
secondes,StartIntervalCalendar
pour une heure et / ou une date spécifique. Voir 126907 sur SuperUser pour un exemple que j'ai fait avec StartCalendarInterval):Modifiez le
.plist
si nécessaire pour pointer vers votre script et tout argument si nécessaire (les arguments sont sur des lignes distinctes) et enregistrez le fichier sous le même nom que la valeur Label mais avec.plist
à la fin. (par exemple,local.my-mac.flickrstats
serait enregistré souslocal.my-mac.flickrstats.plist
). Si vous ne l'avez pas déjà fait, déplacez ce.plist
fichier vers/Library/LaunchDaemons
lors de la création d'un démon (s'exécute tout le temps) ou vers~/Library/LaunchAgents
(vous seul êtes connecté) ou/Library/LaunchAgents
(tout utilisateur est connecté).Pour démarrer le travail que vous souhaitez exécuter
launchctl
si nécessaire pour charger le fichier. Pour les éléments dans/Library
, vous devez utiliser sudo: par exemple,sudo launchctl load -w /PATH/TO/PLIST
Pour référence, consultez également les questions suivantes sur le super utilisateur: commande Launchd en tant que root , chargez un démon à l'échelle du système et comment puis-je obtenir un script à exécuter tous les jours
la source
Je sais que ce n'est pas un bon tutoriel, mais vous pouvez consulter le Guide de programmation des démons et des services d'Apple, qui contient une section sur la planification des travaux chronométrés.
Je sais que ce n'est pas un tutoriel complet, mais avec lui, vous pouvez comprendre les bases de
launchd
.Il fournit également un exemple de
crond
tâche:la source
Cela m'a beaucoup aidé: http://launchd.info
Il couvre la configuration, l'administration et le dépannage à l'aide de Terminal ou de LaunchD GUI LaunchControl . Des exemples sont également fournis.
la source
Je sais que vous cherchiez un tutoriel, mais par hasard quelqu'un vient ici dans le cadre de la recherche d'un outil pour les aider à créer / modifier des entrées launchd, je l'ai déjà utilisé: Lingon (sourceforge)
Il n'est plus développé activement, mais ce qui s'y trouve fonctionne (et inclut évidemment la source, etc.). Je l'ai utilisé sur Snow Leopard pour planifier des sauvegardes sur le cloud Amazon, etc.
la source