web-dev-qa-db-fra.com

Est-il possible d'avoir un fichier crontab contenant 1k + lignes d'horaires?

Je prévois de créer des tâches planifiées et je veux que Linux les gère à l’aide de crontab.

Note: certaines tâches ont des horaires différents et d'autres sont identiques

[fichier crontab (schedule.cron)]

* * * * * /application/monitor -source1
* * * * * /application/monitor -source2
* * * * * /application/monitor -source3
...
* * * * * /application/monitor -source500
* * * * * /application/monitor -source501
* * * * * /application/monitor -source502
...
* * * * * /application/monitor -source1000
* * * * * /application/monitor -source1001
* * * * * /application/monitor -source1002
5
prix

Je suis à peu près sûr qu'il n'y a pas de limite à la longueur d'un fichier cron (peut-être 65 536 caractères/lignes en raison d'une limite de 32 bits?).

Certaines personnes en débordement de pile et défaillance du serveur pensaient qu'il y avait une limite:

(2011) Ubuntu Debian est limité à 256 (et je viens de le rencontrer). FreeBSD acceptera volontiers 600 entrées. Je n'ai pas vérifié plus loin, mais 600 entrées crontab devraient suffire à tout le monde :)

Mais ce n’était pas la réponse acceptée, c’était et cela indiquait qu’il n’y en avait pas.

Il ne semble pas y avoir de limite documentée au nombre d'entrées de crontab autorisées. Donc, à moins que le code source ne corresponde à la version que vous utilisez, l’entrée BUG dans la page de manuel crontab pourrait être utile:

Although cron requires that each entry in a crontab end in a newline character, neither the crontab command nor the cron daemon will detect this error. Instead, the crontab will appear to load normally. However, the command will never run. The best choice is to ensure that your crontab has a blank line at the end.

Et sur nix et Linux , voici la réponse:

le nombre de copains semble dépendre du système de fichiers (taille maximale du fichier), car le démon cron enregistre les entrées crontab par utilisateur dans une liste chaînée (voir user.c de cronie pour plus de détails). Cela signifie que le nombre maximal d’entrées de travail pour crontab est pratiquement illimité.

Donc, je suis presque sûr que c'est illimité, mais vous devez avoir cette ligne blanche à la fin. :)

2
Tim

Ceci est toujours au top pour ceux qui recherchent des limites crontab (moi-même inclus). Je vais donc poster une mise à jour pour toute autre personne intéressée:

À compter de 2019, Cron sur Debian appliquera un nombre maximal de lignes crontab afin d'empêcher un utilisateur malveillant de créer une crontab excessivement grande. Selon le journal des modifications Debian .

  • La version 3.0pl1-133 a introduit une limite de 1000 lignes le 10 mars
  • La version 3.0pl1-134 a assoupli cette limite à 23 000 lignes le 23 juin

Des distributions basées sur Debian telles que Ubuntu et Mint adopteront probablement ces modifications bientôt ™

1
Peter