GNU/Linux >> Tutoriels Linux >  >> Linux

Où est la minuterie Cron ?

Existe-t-il un moyen d'accéder au cron timers et obtenir les secondes restantes jusqu'à la prochaine exécution des scripts dans le crontab ou peut-être les secondes depuis la dernière ?

Réponse acceptée :

Pas facilement. crond attend un signal du noyau et se met en veille. Lorsqu'il reçoit le signal, il vérifie s'il y a des cronjobs à exécuter dans cette minute, les lance et se rendort.

C'est une conception très efficace - cron n'utilise aucun processeur pendant qu'il dort. Il n'a pas non plus conscience du temps qui passe. Lorsqu'il se met en veille, il définit un "délai d'attente" basé sur le temps qu'il reste avant que la prochaine commande de n'importe quel cronjob "enregistré" ne doive s'exécuter.

Sur Solaris 10 :

sol10-primary:/> # pflags  271  
271:    /usr/sbin/cron
        data model = _ILP32  flags = ORPHAN|MSACCT|MSFORK
 /1:    flags = ASLEEP  pollsys(0x8047c70,0x1,0x8047ce8,0x806ba00)

Lors du traçage du démon cron, vous verrez qu'il se met en veille avec un délai d'attente, comme ci-dessous :

waitid(P_ALL, 0, 0x08047CD0, WEXITED|WTRAPPED|WNOHANG) Err#10 ECHILD
time()                                          = 1361952435
pollsys(0x08047C70, 1, 0x08047CE8, 0x0806BA00) (sleeping...)
        fd=3  ev=POLLRDNORM rev=0
        timeout: 105.000000000 sec
        sigmask = 0 0 0 0

Lorsque vous mettez à jour une tâche cron, le processus en veille est également réveillé, mais pour mettre à jour sa propre configuration, après quoi il se remettra en veille avec la nouvelle valeur de délai d'attente.

Il est possible de voir le délai d'attente qui a été défini. Notez que cron a appelé l'appel système time juste avant de s'endormir (ce qui renvoie les secondes depuis l'epoc), donc si vous l'avez observé (c'est-à-dire que vous avez suivi le processus lorsqu'il a appelé l'appel système time() , vous pourrez soustraire cette heure par rapport à l'heure actuelle et comparez-la au délai d'attente défini sur l'appel pollsys.

Donc… comme je l'ai dit, pas facilement.


Linux
  1. Où est le journal cron/crontab ? / Comment activer le Cron Log ?

  2. Où est l'exécutable PHP sur Ubuntu ?

  3. Où se trouve le système de fichiers du sous-système Linux dans Windows 10 ?

  4. Où est la commande gem dans RHEL6 ?

  5. Où est le fork() sur la bombe fork :(){ :|:&};: ?

La commande timer sous Linux

Tutoriel sur l'utilisation de la commande Timeout sous Linux

Où se trouve le fichier php.ini sur un PC Linux/CentOS ?

Où l'ABI x86-64 System V est-elle documentée ?

Quelle est la précision des compteurs d'intervalles sous Linux ?

où se trouve la base de données mise à jour ?