Je viens de découvrir que cron
a été déprécié dans Mac OS X. Pourquoi cela, et sera-t-il éventuellement supprimé des futures versions ?
Réponses
Trop de publicités?Avec la sortie de Mac OS 10.4, launchd
a été choisi pour remplacer cron
dans Mac OS. Voici un version en cache de la page launchd de l'Apple Developer Connection en 2005. Il explique pourquoi cron
a été déprécié, ainsi que les avantages de l'option launchd
du point de vue d'Apple.
Le résumé : launchd
a été créé pour ne pas seulement remplacer cron
mais aussi init
, xinetd
pour de meilleures performances, et un meilleur contrôle de la configuration et des tâches elles-mêmes.
Le site
launchd
offre une interface unique et standardisée pour tous les programmes lancés automatiquement par le système. De plus, les fichiers de configuration qui déterminent quand lancer un programme donné peuvent également spécifier les limites de ressources et les 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'un travail soit lancé une fois au démarrage du système ou à la connexion de l'utilisateur, à la demande sur le réseau, ou à intervalles.
cron
est toujours livré sur MacOS 11 Big Sur, mais cela étant dit...
L'article de wikipedia sur lancé sur le marché propose un très bon résumé, des discussions approfondies ainsi que d'excellentes vidéos et des liens externes pour approfondir cette décision d'Apple.
En un mot, launchd
remplace 7 tâches majeures et une cargaison de scripts ( inetd , init y rc et les structures script du shell associées, crond , atd , chien de garde , SystemStarter ) avec un outil open sourced beaucoup plus puissant.
Pourquoi ?
- plus rapide grâce au contrôle optimisé des lancements et aux lancements retardés jusqu'à ce qu'ils soient nécessaires, des séquences d'actions plus sophistiquées sont désormais possibles
- gère les préoccupations en matière d'efficacité énergétique en accord avec la nouvelle conception du CPU
- plus puissants dans l'ensemble que les anciens outils
- contrôle unifié et centralisé des processus
- plus sécurisé dès la conception
Quand : 29 avril 2005 (date de mise en vente d'OS X Tiger)
Rien ne nous empêche d'utiliser launchd pour lancer cron maintenant sur Tiger, Leopard ou Snow Leopard.
Le futur Apple devrait-il arrêter 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.
D'autres ont déjà répondu pourquoi cron
a été remplacée. Quant à l'autre question :
sera-t-il finalement complètement supprimé des futures versions ?
cron
est un utilitaire/service obligatoire des normes POSIX et Unix. Ainsi, il n'y a que deux circonstances dans lesquelles cron
serait en fait retiré de MacOS :
- Apple décide qu'être un système Unix officiellement certifié ne vaut pas la peine de perdre son temps (peu probable).
-
cron
est retiré de la spécification unique d'Unix (encore moins probable)
Si l'une de ces deux choses se produit, alors vous devriez ressentir une certaine urgence à porter vos crontabs vers les services launchctl. Ou alors, compilez simplement un cron open source et exécutez-le sur MacOS afin d'exécuter vos crontabs.
Je ne sais même pas si cron a été déprécié. man crontab
semble indiquer que ce n'est pas le cas :
(Note Darwin : Bien que cron(8) et crontab(5) soient officiellement supportés sous Darwin, leur fonctionnalité a été absorbée dans launchd(8), qui fournit une manière plus flexible d'exécuter automatiquement des commandes. Voir launchctl(1) pour plus d'informations).
Guide de programmation des démons et services indique qu'il a été déprécié :
Remarque : bien qu'il soit toujours pris en charge, cron n'est pas une solution recommandée. Il a été déprécié au profit de launchd.
crontab est également requis par POSIX et OS X est censé être compatible avec le SUS.
Dans tous les cas, cron ne cessera probablement pas de fonctionner de sitôt, et je ne sais pas si on peut dire qu'il est plus lent ou moins sûr que launchd. Le processus cron ne devrait pratiquement pas utiliser de temps CPU ou de mémoire. Certains avantages de l'utilisation ou de l'apprentissage de cron sont qu'il est également disponible sur d'autres plateformes, et que le format de configuration est plus simple.