Se eu adicionar algo ao cron como um trabalho semanal, ele não será executado a menos que meu computador esteja ligado nesse exato momento exato?

2

Digamos que eu faça isso:

0 0 0 * * somejob

Isso acontecerá em uma data definida e, se meu computador não estiver em uma data como essa, ele pulará essa semana?

Digamos que eu defina esse trabalho agora. E então meu computador está desligado por 5 dias para saber o dia todo.

Basicamente, preciso de algo para ser executado toda semana, mas meu computador pode não estar funcionando 24 horas por dia.

    
por Zombies 11.07.2010 / 01:02

2 respostas

4

Sim, cron só executará um trabalho agendado para um horário específico se o computador estiver ligado nesse momento. O modo como funciona é que, a cada minuto, ele verifica todas as tarefas agendadas agendadas para ver se seus campos de hora correspondem ao minuto atual e, em caso afirmativo, executa o trabalho. Caso contrário, será ignorado. Não há nenhum conceito de "salvar" a execução de um trabalho para um tempo posterior.

O que você poderia fazer, para sua situação, é usar um arquivo de marcador para indicar a última vez que o trabalho foi executado. Crie um pequeno script ou programa que tenha esta aparência (esta é a sintaxe pseudo-Bash):

if (marker file was last modified > 1 week ago); then
    run the job
    touch marker file
fi

e você pode definir esse script como um cron job para ser executado todos os dias, todas as horas ou até mesmo todos os minutos - sempre que você precisar garantir que ele será executado pelo menos uma vez por semana durante o período em que tiver o computador .

    
por 11.07.2010 / 01:26
2

Anacron provavelmente é o que você está procurando:

Anacron is a periodic command scheduler. It executes commands atintervals specified in days. Unlike cron, it does not assume that thesystem is running continuously.

    
por 11.07.2010 / 05:27