Cron ? Launchd ? iCal??
Si oui, comment ?
Cron ? Launchd ? iCal??
Si oui, comment ?
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)
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.
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.
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.
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.