Je viens de découvrir que ce système cron
est devenu obsolète sous Mac OS X. Pourquoi cela, et sera-t-il finalement complètement supprimé des versions futures?
Avec la sortie de Mac OS 10.4, a launchd
été choisi pour remplacer cron
Mac OS. Voici une version mise en cache de la page de lancement d'Apple Developer Connection en 2005. Elle explique pourquoi a cron
été déconseillée, ainsi que les avantages du launchd
point de vue d'Apple.
Le résumé: a launchd
été créé non seulement pour remplacer cron
mais aussi init
, xinetd
pour de meilleures performances et un meilleur contrôle sur la configuration et les tâches elles-mêmes.
Le
launchd
démon offre une interface unique et standardisée à tous les programmes démarrés automatiquement par le système. De plus, les fichiers de configuration qui déterminent quand exécuter un programme donné peuvent également spécifier des limites de ressources et des variables d'environnement, ce qui simplifie la configuration et la sécurité de nombreux programmes. Le même format de fichier de configuration est utilisé, qu'une tâche soit lancée une fois au démarrage du système ou à la connexion de l'utilisateur, à la demande sur le réseau ou à intervalles.
L'article de wikipedia sur launchd contient un très bon résumé, des discussions approfondies ainsi que de superbes vidéos et liens externes pour approfondir cette décision d'Apple.
En bref, launchd
remplace 7 tâches principales et une cargaison de scripts ( inetd , init et rc et structures de script shell associées, crond , atd , watchdogd , SystemStarter ) par un outil open source beaucoup plus puissant.
Pourquoi:
Quand: 29 avril 2005 (quand OS X Tiger a été mis en vente)
Rien ne nous empêche tous d'utiliser launchd pour démarrer cron maintenant sur Tiger, Leopard ou Snow Leopard.
Si le futur Apple arrête de livrer /usr/sbin/cron
, il finira sûrement comme wget et d'autres outils open source matures qui sont compilés et doivent être ajoutés en tant qu'outil de ligne de commande distinct.
Je ne sais même pas si cron a été déprécié. man crontab
semble indiquer qu'il n'a pas:
(Remarque Darwin: bien que cron (8) et crontab (5) soient officiellement pris en charge sous Darwin, leurs fonctionnalités ont été absorbées dans launchd (8), qui fournit un moyen plus flexible d'exécuter automatiquement les commandes. Voir launchctl (1) pour plus d'informations .)
Le guide de programmation des démons et des services indique qu'il est obsolète:
Remarque: Bien qu'il soit toujours pris en charge, cron n'est pas une solution recommandée. Il est déconseillé au profit de launchd.
crontab est également requis par POSIX , et OS X est censé être compatible SUS.
Dans tous les cas, cron ne s'arrêtera probablement pas de sitôt, et je ne sais pas si on peut dire qu'il est plus lent ou moins sécurisé que launchd. Le processus cron ne devrait utiliser presque pas de temps CPU ni de mémoire. Certains avantages de l'utilisation ou de l'apprentissage de cron sont qu'il est également disponible sur d'autres plates-formes et que le format de configuration est plus simple.