Não é fácil. o crond espera por um sinal do kernel e vai dormir. Quando recebe o sinal, ele verifica se há cronwares para executar naquele minuto, lança esses e volta a dormir.
É um design muito eficiente - o cron não usa nenhuma CPU enquanto está dormindo. Não tem consciência do tempo passando também. À medida que vai adormecendo, ele define um "tempo limite" com base em quanto tempo demora até que o próximo comando de qualquer trabalho com registro "registrado" seja executado.
No 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)
Ao rastrear o daemon do cron, você verá que ele vai dormir com um tempo limite, conforme abaixo:
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
Quando você atualiza qualquer tarefa cron, o processo de suspensão também é ativado, mas atualiza sua própria configuração, após o qual ele volta a adormecer com o novo valor de tempo limite.
É possível ver o tempo limite definido. Observe que o cron chamou o syscall de tempo um pouco antes quando ele foi dormir (o que retorna os segundos desde o epoc), então se você observou isso (ou seja, rastreou o processo quando chamou o time () syscall, você será capaz de subtrair esse tempo de corrente e compare-o com o tempo limite definido na chamada do pollsys.
Então ... como eu disse, não é fácil.