Tenho certeza que existem muitas variações, o modo como funciona em dcron (também conhecido como o daemon do cronômetro de Dillon) é que ele dorme por até 60 segundos por vez, ele tenta sincronizar isso dormir menos, se necessário, de modo a acordar aos 00 segundos de cada minuto.
Ele usa sleep()
, o que coloca o processo em suspensão (a menos que ocorra um sinal) sem usar a CPU.
Quando ele acorda, ele verifica um arquivo cron.update
(criado por crontab
editing). Ele recria sua fila de execução, se necessário, executa as tarefas esperadas e dorme novamente.
Pelo menos um daemon do cron ( fcrond
) usa um sinal enviado pela edição do crontab para o daemon do cron em vez de uma abordagem de suspensão / verificação.
Eu nunca vi uma crond que execute as coisas com mais freqüência do que uma vez por minuto, então elas geralmente são muito leves em recursos.
No Linux, se você olhar em /proc
em coisas como bytes lidos / escritos ou iowait para crond
você pode ver que tem um uso relativamente alto, isso porque ele acaba contabilizando todos os processos filhos que ele começa, por exemplo no CentOS 5.x:
# grep "^[rw]" /proc/'pgrep crond'/io
rchar: 153463658151
wchar: 91095820045
read_bytes: 44480745472
write_bytes: 2261389312
(graças a atualizações de pacotes agendadas e tarefas ASLR / pré-link neste caso)
Veja também o link .