web-dev-qa-db-fra.com

Cron vs minuteries systemd

On m'a récemment fait remarquer qu'il existait une alternative à cron, à savoir les temporisateurs systemd.

Cependant, je ne connais rien sur les temporisateurs systemd ou systemd. Je n'ai utilisé que du cron.

Il y a un peu discussion dans le Wiki Arch . Cependant, je recherche une comparaison détaillée entre cron et les temporisateurs systemd, en se concentrant sur les avantages et les inconvénients. J'utilise Debian, mais je voudrais une comparaison générale pour tous les systèmes pour lesquels ces deux alternatives sont disponibles. Cet ensemble peut inclure uniquement des distributions Linux.

Voici ce que je sais.

Cron est très vieux, il remonte à la fin des années 1970. L'auteur original de cron est Ken Thompson, le créateur d'Unix. Vixie cron, dont les crons dans les distributions Linux modernes sont des descendants directs, date de 1987.

Systemd est beaucoup plus récent et quelque peu controversé. Wikipédia me dit que sa sortie initiale était le 30 mars 2010.

Donc, ma liste actuelle des avantages des temporisateurs cron sur systemd est:

  1. Cron est garanti pour être dans n'importe quel système de type Unix, dans le sens d'être un logiciel pris en charge installable. Cela ne va pas changer. En revanche, systemd peut ou non rester dans les distributions Linux à l'avenir. Il s'agit principalement d'un système d'initialisation et peut être remplacé par un système d'initialisation différent.

  2. Cron est simple à utiliser. Certainement plus simple que les minuteries systemd.

La liste correspondante des avantages des temporisateurs systemd par rapport à cron est la suivante:

  1. Les temporisateurs Systemd peuvent être plus flexibles et capables. Mais j'aimerais des exemples de cela.

Donc, pour résumer, voici certaines choses qu'il serait bon de voir dans une réponse:

  1. Une comparaison détaillée des temporisateurs cron vs systemd, y compris les avantages et les inconvénients de chacun.
  2. Exemples de choses que l’un peut faire et que l’autre ne peut pas faire.
  3. Au moins une comparaison côte à côte entre un script cron et un script de temporisation systemd.
89
Faheem Mitha

Voici quelques points sur ces deux :

  1. vérifier ce que fait vraiment votre travail cron peut être un peu compliqué, mais tous les événements de la minuterie systemd sont soigneusement enregistrés dans le journal systemd comme les autres unités systemd en fonction de l'événement, ce qui rend les choses beaucoup plus faciles.

  2. les temporisateurs systemd sont des services systemd avec toutes leurs capacités de gestion des ressources, IO ordonnancement CPU, ...
    Il y a une liste:

    • filtres d'appel système
    • iD utilisateur/groupe
    • adhésion
    • Belle valeur
    • Score OOM
    • Classe d'ordonnancement IO et priorité
    • Politique de planification du processeur CPU
    • affinité umask
    • pantalons de minuterie
    • bits sécurisés
    • accès au réseau et, ...
  3. avec l'option de dépendances, tout comme les autres services systemd, il peut y avoir des dépendances sur le temps d'activation.

  4. Les unités peuvent être activées de différentes manières, leur combinaison peut également être configurée. les services peuvent être démarrés et déclenchés par différents événements comme l'utilisateur, le démarrage, les changements d'état du matériel ou par exemple 5 minutes après le branchement du matériel et, ...

  5. configuration beaucoup plus facile de certains fichiers et balises simples pour effectuer une variété de personnalisations en fonction de vos besoins avec des temporisateurs systemd.

  6. Activez/désactivez facilement le tout avec:

    systemctl enable/disable 
    

    et tuez tous les enfants de l'emploi avec:

    systemctl start/stop
    
  7. les minuteries systemd peuvent être programmées avec des calendriers et des heures monotones, ce qui peut être très utile en cas de fuseaux horaires différents et, ...

  8. les événements de temps systemd (calendrier) sont plus précis que cron (semble 1s de précision)

  9. les événements de temps systemd sont plus significatifs, pour ceux récurrents ou même ceux qui devraient se produire une fois, voici un exemple tiré du document :

    Sat,Thu,Mon-Wed,Sat-Sun → Mon-Thu,Sat,Sun *-*-*00:00:00
      Mon,Sun 12-*-* 2,1:23 → Mon,Sun 2012-*-* 01,02:23:00
                    Wed *-1 → Wed *-*-01 00:00:00
            Wed-Wed,Wed *-1 → Wed *-*-01 00:00:00
                 Wed, 17:48 → Wed *-*-* 17:48:00 
    
  10. Du point de vue de l'utilisation du processeur, le minuteur systemd réveille le processeur sur le temps écoulé, mais cron le fait plus souvent.

  11. Les événements de temporisation peuvent être planifiés en fonction des heures de fin des exécutions. Certains retards peuvent être définis entre les exécutions.

  12. La communication avec d'autres programmes est également notable, parfois il est nécessaire pour certains autres programmes de connaître les temporisateurs et l'état de leurs tâches.

47
F.sb

Directement de la bouche du cheval, pour ainsi dire: https://wiki.archlinux.org/index.php/Systemd/Timers#As_a_cron_replacement

Un extrait de la page ci-dessus:

Avantages

Les principaux avantages de l'utilisation des minuteries proviennent du fait que chaque travail possède son propre service systemd. Certains de ces avantages sont:

  • Les travaux peuvent être facilement démarrés indépendamment de leurs minuteries. Cela simplifie le débogage.
  • Chaque travail peut être configuré pour s'exécuter dans un environnement spécifique (voir systemd.exec (5)).
  • Les travaux peuvent être attachés à des groupes de contrôle.
  • Les travaux peuvent être configurés pour dépendre d'autres unités systemd.
  • Les travaux sont enregistrés dans le journal systemd pour un débogage facile.

Mises en garde

Certaines choses qui sont faciles à faire avec cron sont difficiles à faire avec les minuteries seules.

  • Complexité: pour configurer un travail chronométré avec systemd, vous créez deux fichiers et exécutez quelques commandes systemctl. Comparez cela à l'ajout d'une seule ligne à une crontab.
  • Emails: il n'y a pas d'équivalent intégré à MAILTO de cron pour l'envoi d'e-mails en cas d'échec du travail. Voir la section suivante pour un exemple de configuration d'un équivalent à l'aide de OnFailure =.
17
shdwlynx