Como o cron scheduling é realmente implementado e garante que os scripts sejam executados no prazo?

7

Eu quero perguntar sobre os trabalhos do cron. OK, colocamos os scripts no crontab e o daemon cron os executa.

Agora, se eu entendi isso, cada minuto, o cron verifica o crontab de cada usuário e executa os scripts configurados. Mas como isso é realmente feito? Ele bifurca processos filhos etc?

Não é possível executar as tarefas seqüencialmente, pois os intervalos seriam perdidos (por exemplo, devido à espera de um script de execução longa para ser concluído). Então, como isso é realmente implementado.

Só para ajudar, não estou procurando código de baixo nível. Uma descrição de alto nível (talvez do algoritmo?) Ou como isso é implementado na maioria das distros seria suficiente para mim.

    
por Jim 10.07.2013 / 23:25

1 resposta

6

Eu encontrei este Q & A no StackOverflow intitulado: Como o cron agenda os trabalhos internamente ? .

trecho desse post & o artigo da wikipedia sobre o cron

The algorithm used by this cron is as follows:

1. On start-up, look for a file named .crontab in the home directories of 
   all account holders.

2. For each crontab file found, determine the next time in the future that
   each command is to be run.

3. Place those commands on the Franta-Maly event list with their corresponding
   time and their "five field" time specifier.

4. Enter main loop:

   1. Examine the task entry at the head of the queue, compute how far in 
      the future it is to be run.

   2. Sleep for that period of time.

   3. On awakening and after verifying the correct time, execute the task 
      at the head of the queue (in background) with the privileges of the 
      user who created it.

   4. Determine the next time in the future to run this command and place 
      it back on the event list at that time

Este SuperUser Q & A intitulado: Como funciona o cron? abrange alguns dos seus recursos adicionais questões. Por exemplo, sua pergunta sobre como o cron lida com tarefas que estão agendadas para o mesmo horário. Uma das respostas nesse encadeamento informa que, à medida que o daemon do cron processa cada tarefa, ele bifurca cada trabalho planejado, de modo que nenhum único trabalho funcionará como um bloqueador para tarefas que têm tempos sobrepostos.

    
por 11.07.2013 / 01:03