76 votes

Comment puis-je faire en sorte qu'un script s'exécute tous les jours sur Mac OS X?

Cron ? Launchd ? iCal??

Si oui, comment ?

73voto

Kit Roed Points 1922

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

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

Cron est le plus simple et le plus connu et il existe de nombreux tutoriels disponibles. L'astuce est d'ajouter la dernière ligne ci-dessous à votre crontab (soit en éditant /etc/crontab ou en utilisant crontab en ligne de commande) :

MM HH DD MM WKD -- Minutes, Heure, Jour, Mois, Jour de la semaine (ex. Dim, Lun)
MM HH * * * NOM_UTILISATEUR /CHEMIN/VERS/SCRIPT
00 3 * * * chealion /myscript.sh "S'exécute à 03:00 tous les jours"

Sous Mac OS X, cron a en réalité été remplacé par launchd mais launchd est compatible avec cron ce qui signifie que vous pouvez toujours utiliser cron mais c'est en réalité launchd qui fait tout le travail.

Si vous souhaitez utiliser launchd, vous voudrez consulter d'autres questions ici sur Super User également : (ex. Comment exécuter une commande launchd en tant que root?) pour savoir où enregistrer votre fichier de configuration (le fichier plist) car son exécution dépend du répertoire où il est stocké et de la manière dont il est chargé (ex. si vous avez utilisé sudo ou non) - similaire à cron.

Un exemple de plist launchd à exécuter tous les jours (assurez-vous que le fichier et le label sont identiques - moins le plist pour le label) suit - ce script s'exécute tous les jours à 3 minutes après minuit :

    Label
    local.IDENTIFIER_HERE.SOMETHING
    KeepAlive

    RunAtLoad

    UserName
    NOM_UTILISATEUR_ICI
    Program
    /CHEMIN/VERS/SCRIPT
    ProgramArguments

        Argument_1
        Argument_2

    StartCalendarInterval

        Hour
        00
        Minute
        03

Il convient également de noter que les tâches launchd, si elles étaient planifiées lorsque l'ordinateur est en veille ou éteint, s'exécuteront lorsque l'ordinateur redeviendra disponible (allumé ou réveillé) - bien que ce ne soit qu'une seule fois peu importe le nombre de jours écoulés. Edit: Je viens de consulter un document Apple qui indique que si la machine est éteinte, vous perdrez tout événement launch pendant ce temps-là (votre script ne se lancera pas au démarrage), (la mise en veille fait se lancer le script au réveil)


Une autre option est d'utiliser "at" (consultez la page de manuel avec "man at"). Le script peut se reprogrammer lui-même avec 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 lister les identifiants des tâches planifiées puis "at -r id" pour supprimer la tâche)

Il se peut que vous deviez d'abord 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 : solution rapide, aucun accès sudo/root nécessaire, facile à mettre en place pour des schémas de planification complexes Inconvénient : méthode de planification non standard pour OS X (qui est launchd)

12voto

mohsenr Points 5433

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 14h et 20h"). De plus, c'est (à ma connaissance) le seul outil qui valide réellement la tâche. Si une tâche ne fonctionne pas comme prévu, il vous montrera pourquoi.

C'est gratuit à essayer aussi longtemps que vous le souhaitez.

6voto

Jeremiah Peschka Points 4756

CronniX est une belle interface graphique pour planifier des tâches cron sur Mac... Plutôt décent si vous ne voulez pas plonger dans la documentation cron.

5voto

bob Points 151

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

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

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

4voto

code-8 Points 386

Si vous voulez essayer le GRATUIT, je suggérerais Task Till Dawn

entrer la description de l'image ici

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X