Quando o computador é desligado (ou o daemon cron não está em execução), os trabalhos cron não serão iniciados.
Se você tiver trabalhos que gostaria de executar após o fato durante os períodos em que o computador for desligado, use o anacron. Instalado por padrão, consulte "man anacron", "man anacrontab" ou o arquivo / etc / anacrontab para obter mais informações.
O Ubuntu usa o anacron por padrão para entradas do crontab em:
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
deixando os crontabs restantes para serem tratados pelo daemon cron principal, especificamente:
/etc/crontab
/etc/cron.d
/var/spool/cron
NOTAS
O Anacron em si não é executado como um daemon, mas depende dos scripts de inicialização do sistema e do cron para ser executado.
Na caixa do Ubuntu 8.04 que estou vendo, /etc/init.d/anacron é executado na inicialização e novamente pelo cron todas as manhãs às 07:30.
O README em /usr/share/doc/anacron/README.gz possui um pouco mais de informações do que as contidas nas páginas de manual.
EXEMPLOS
Para trabalhos simples "diariamente", "semanalmente", "mensalmente", coloque uma cópia ou um link simbólico no script em um dos diretórios /etc/cron.{daily|weekly|monthly} acima. O Anacron cuidará de executá-lo diariamente / semanalmente / mensalmente, e se o seu computador estiver desligado no dia em que os scripts "semanais" normalmente rodariam, ele será executado na próxima vez que o computador estiver ligado.
Como outro exemplo, supondo que você tenha um script aqui: /usr/local/sbin/maint.sh
E você deseja executá-lo a cada três dias, a entrada padrão em / etc / crontab seria assim:
# m h dom mon dow user command
0 0 */3 * * root /usr/local/sbin/maint.sh
Se o seu computador não estivesse ligado às 00:00 do dia 3 do mês, o trabalho não seria executado até o dia 6.
Para que o trabalho seja executado no dia 4 quando o computador estiver desligado e "falhe" na execução no dia 3, você usaria isso em / etc / anacrontab (não se esqueça de remover a linha do / etc / crontab):
# period delay job-identifier command
3 5 maint-job /usr/local/sbin/maint.sh
O "atraso" de "5" acima significa que o anacron aguardará 5 minutos antes de executar este trabalho. A idéia é impedir que o anacron ative as coisas imediatamente no momento da inicialização.