Comment puis-je obtenir un script pour fonctionner tous les jours sur Mac OS X?

Cron? Launchd? ICal ??

Si c'est le cas, comment?

    Pour référence, les 3 options fonctionneraient. L'option iCal a cependant plus de limites que les autres.

    (Il existe des GUI pour éditer cron et launchd comme mentionné dans d'autres réponses)

    Cron est le plus direct et bien connu et il existe de nombreux didacticiels disponibles. Coles Notes consiste à ajouter la dernière ligne de bas à votre crontab (soit en éditant /etc/crontab ou en utilisant crontab sur la ligne de commande):

     MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon) MM HH * * * USERNAME /PATH/TO/SCRIPT 00 3 * * * chealion /myscript.sh "Runs at 03:00 every day" 

    Dans Mac OS X, cron a effectivement été remplacé par launchd mais launchd est compatible avec cron ce qui signifie que vous pouvez toujours utiliser cron mais il est effectivement launchd faisant tout le travail.

    Si vous souhaitez utiliser launchd vous voudrez également consulter d'autres questions ici sur Super User (par exemple, comment puis-je exécuter une commande launchd en tant que root? ) Sur l'endroit où vous souhaitez enregistrer votre fichier de configuration (le fichier plist ) Comme quand il s'exécute dépend de quel répertoire il est stocké et comment il est chargé (par exemple, si vous avez utilisé sudo ou non) – semblable à cron.

    Un exemple exécute quotidiennement lancer un programme (assurez-vous que le fichier et l'étiquette sont identiques – moins le nom de l'étiquette) – ce script est exécuté tous les jours à minuit minuit:

     <?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>local.IDENTIFIER_HERE.SOMETHING</string> <key>KeepAlive</key> <false/> <key>RunAtLoad</key> <false/> <key>UserName</key> <string>USERNAME HERE</string> <key>Program</key> <string>/PATH/TO/SCRIPT</string> <key>ProgramArguments</key> <array> <string>Argument_1</string> <string>Argument_2</string> </array> <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>00</integer> <key>Minute</key> <integer>03</integer> </dict> </dict> </plist> 

    Il est également intéressant de noter que les tâches lancées s'ils étaient prévus lorsque l'ordinateur est endormi ou éteint, ils fonctionneront lorsque l'ordinateur sera à nouveau disponible (l'allumer ou le réveiller) – mais une seule fois, peu importe combien de jours cela pourrait avoir Été. Edit: Je viens d'être sur un document Apple qui a déclaré que si la machine était éteinte, vous allez perdre tout événement de lancement durant ce temps (votre script ne démarre pas lors du démarrage) (le script de lancement de Sleep ne démarre pas)


    Une autre option est d'utiliser " at " (cochez la page de manuel avec "man at"). Le script peut se reprogrammer par exemple:

     echo "sh $0 $@" | at `date +%H:%M` tomorrow 

    (Utilisez "+ 10 minutes" au lieu de "demain" pour l'exécuter toutes les 10 minutes, pour arrêter la planification, faites simplement "at -l" pour répertorier les identifiants de travail programmés, puis "at -r id " pour supprimer le travail)

    Vous devrez peut-être démarrer le démon correspondant (atrun) avec (voir https://superuser.com/a/43680 ):

     sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist 

    Avantages: réparations rapides, aucun accès sudo / root requis, facile à faire des schémas de planification compliqués Inconvénients: pas une méthode de planification standard pour OS X (qui est lancé)

    LaunchControl est une autre interface graphique pour launchd / launchctl. Alors que les alternatives mentionnées par d'autres sont parfaitement capables de lancer un script quotidiennement, avec LaunchControl, vous pouvez configurer des horaires complexes (comme «une fois tous les jours de la semaine, les week-ends toutes les heures entre 2 heures et 18 heures»). Il est également (AFAIK) le seul outil qui valide effectivement le travail. Si un travail ne fonctionne pas comme prévu, cela vous montrera pourquoi.

    Il est gratuit d'essayer aussi longtemps que vous le souhaitez.

    CronniX est un bon interface de GUI pour la planification de cron jobs sur le Mac … Assez si vous ne voulez pas aller dans la documentation de cron.

    • Pour iCal, vous voudrez peut-être lire cet article .
    • Vous devriez trouver suffisamment de tutoriels pour cron si vous google pour cela.

    Cela dépend de ce que vous voulez: les scripts iCal ne seront exécutés que si vous êtes connecté, cron exécute le script sans être connecté. Je ne sais pas si iCal exécute un script si le Mac était tourné au moment où le script devrait Ont été exécutés. cron fait cela.

    Une mise à jour: vous pouvez consulter certaines applications dans le Mac OS X App Store qui font ceci:

    • LaunchD Task Scheduler

    • Plisterine

    Lingon semble également être disponible, selon le système d'exploitation que vous utilisez.

    J'utilise toujours Lingon pour cela, mais il semble que ce soit hors de développement. Vous pourriez essayer Crontooie , mais je ne l'ai jamais utilisé personnellement. Ou simplement modifier le fichier crontab dans le terminal.

     sp@mactop ~ $ crontab -l */5 * * * * /usr/local/bin/cinco.sh sp@mactop ~ $ cat /usr/local/bin/cinco.sh #!/bin/sh ....cut.... sp@mactop ~ $ 

    … quelles que soient les lignes de commande que vous lancez pour "…. coup …" sera exécuté toutes les cinq minutes.

    30 ans de progrès, et 'cron' est toujours mon planificateur préféré.

    -C

    Si vous voulez essayer GRATUITEMENT, je suggère Task Till Dawn

    Entrez la description de l'image ici

    http://www.macupdate.com/app/mac/33283/task-till-dawn

    Voici un utilitaire simple et gratuit pour générer XML XML:

    http://www.gieson.com/Library/projects/utilities/launcha/

    Avec cet utilitaire, il n'est pas nécessaire d'installer un programme, enregistrez simplement les résultats dans votre dossier Library / LaunchAgents.