7 votes

Quelle est la différence entre les différents planificateurs d'événements pour OS X / Darwin ?

Je ne comprends pas bien les différences entre les trois outils (que je connais) pour planifier l'exécution du code sur OS X / Darwin :

Je comprends que cron est largement dépassé, mais il est encore utilisé par certains utilitaires (comme Super Super !, pour une raison quelconque), et que la fonction pmset a la possibilité de réveiller l'ordinateur pour exécuter des tâches spécifiques. Mais je ne vois pas très bien ce qui pourrait guider le choix de l'un par rapport à l'autre en général.

En quoi ces trois méthodes d'ordonnancement des OS diffèrent-elles (en particulier sur Mavericks, si les choses y sont différentes), notamment en ce qui concerne les gammes de tâches auxquelles elles sont adaptées, et comment elles se comportent pendant le sommeil ou l'hibernation ?

5voto

Graham Miln Points 39606

Utilice launchd au lieu de cron , at ou d'autres outils UNIX pour Mac OS X.

pmset

pmset est un outil de ligne de commande intégré permettant d'obtenir et de définir des valeurs relatives à la puissance sous Mac OS X. L'une des capacités de pmset est d'ajouter et de supprimer des entrées de la file d'attente IOPMQueue ; la file d'attente IOPMQueue est la file d'attente de niveau IOKit qui permet à votre Mac de s'allumer et de se réveiller à une heure spécifique. IOPMQueue permet également de planifier les arrêts et les redémarrages.

Il n'est pas possible de programmer du code arbitraire à l'aide de pmset ou de IOPMQueue.

cron

cron est un pilier du monde de la planification des tâches. Cependant, sous Mac OS X, l'utilisation de cron n'est pas recommandée. Utiliser launchd .

cron est mis en œuvre en vérifiant chaque minute les tâches qui sont dues. Cela permet un format d'ordonnancement puissant et expressif, mais au prix de la nécessité de réveiller le processeur toutes les minutes.

cron ne sait pas que votre Mac est endormi. Si une tâche doit être effectuée alors que votre Mac est endormi ou éteint, elle ne sera pas exécutée. Lorsque votre Mac se rallume, la tâche n'est pas exécutée car la minute au cours de laquelle elle aurait dû l'être est passée.

Il existe d'autres outils qui s'appuient sur cron et peuvent exécuter des tâches manquées au réveil. Aucun n'est inclus par défaut dans Mac OS X.

lancementd

lancementd (launch daemon) est le démarreur de système, l'outil de planification et le chien de garde des processus d'Apple. launchd est écrit pour répondre aux besoins du système d'exploitation en premier lieu et des utilisateurs en second lieu. Il s'agit d'un processus puissant et capable de gérer ou de lancer presque tous les autres processus sur votre Mac.

launchd est une amélioration de cron pour l'ordonnancement car il n'a pas besoin d'effectuer des sondages pour exécuter des tâches. Au lieu de cela, launchd peut rester inactif jusqu'au moment où une tâche doit être exécutée. À l'ère de l'informatique mobile et de l'économie d'énergie, c'est important.

launchd ne réveillera pas un Mac endormi pour effectuer des tâches.

tickets de travail launchd sont des fichiers de liste de propriétés (plist). Ces fichiers peuvent être modifiés à l'aide d'un éditeur de texte ou d'un certain nombre d'applications tierces.

launchd est recommandé et convient à la plupart des situations de planification.

Tiers

Il existe un certain nombre d'outils de planification tiers disponibles sous Mac OS X. Ils fournissent souvent une interface graphique ou offrent plus de fonctionnalités que les outils de ligne de commande standard de Mac OS X. L'outil auquel je suis associé est Gestionnaire de l'énergie .

3voto

moodforaday Points 2633

pmset est de bas niveau et ne contrôle pas vraiment l'exécution du code, du moins pas d'une manière directe ou intentionnelle. Il contrôle des choses comme l'allumage ou l'extinction de votre Mac à des heures spécifiques, de la même manière que vous pouvez le faire dans les Préférences Système " Économiseur d'énergie ". D'une manière générale, vous ne devriez jamais avoir besoin d'utiliser pmset pour quoi que ce soit directement.

cron est toujours là parce que eh bien, parce qu'Apple ne l'a pas encore supprimé, bien qu'il ait été déprécié il y a des années. Je soupçonne que c'est parce qu'il y a quelques anciens d'Un*x qui travaillent encore chez Apple et qui ne veulent pas le voir disparaître. Mais, vraiment, il n'y a pas de sens à l'utiliser si vous pouvez utiliser launchd . IIRC cron les travaux ne s'exécutent pas si l'ordinateur était endormi au moment où ils devaient s'exécuter.

launchd est le remplaçant d'Apple pour cron qui apporte beaucoup de souplesse à la programmation d'événements sur un Mac. C'est ainsi que vous devriez programmer des événements sur un Mac. La meilleure façon d'apprendre à utiliser launchd est LaunchControl qui est une application à 10 $US sans DRM, sans codes de licence et sans restrictions. (Les développeurs comptent sur l'honnêteté de leurs utilisateurs pour payer les frais d'enregistrement s'ils utilisent l'application). Vous bénéficiez non seulement de la fonctionnalité "glisser-déposer" qui permet d'intégrer divers éléments de launchd chaque liste est documentée afin que vous puissiez voir exactement ce qu'elle fait. Très élevé recommandé.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X