Como evitar que o atd execute trabalhos passados?

8

O daemon at é uma ótima ferramenta! No entanto, se um trabalho estiver agendado para 8:00 da manhã e a máquina estiver desligada nesse momento, o executará o trabalho sempre que a máquina for inicializada. O que eu gostaria de fazer é impedir que ele execute o trabalho se o tempo passar. Eu pesquisei as páginas de manual e on-line, mas ou não há uma resposta ou não consegui encontrar uma. Eu estou usando o Arch, mas tanto quanto eu sei é muito semelhante entre distribuições.

Qualquer ajuda é muito apreciada!

    
por Elmer 24.07.2012 / 18:37

4 respostas

6

Quando um trabalho se torna um trabalho passado? Se você ligar o sistema às 7:59:50 e o daemon at começar em 8:00:01 , o trabalho deverá ser executado? E se o daemon começar às 7:59:59, mas demorar dois segundos para ler todos os seus arquivos?

Você decide! Inicie seu trabalho com uma verificação de horário e cancele se o tempo tiver passado.

export execute_by_date=$(date +%s 'tomorrow 8:01')
at tomorrow 8:00
[ "$(date +%s)" -le "$execute_by_date" ] || exit
do_stuff
␄
    
por 25.07.2012 / 02:28
2

Você poderia escrever um script de inicialização que cancelasse todos os postos de trabalho revogados no desligamento ou reinicialização.

Não tenho certeza sobre o Arch-Linux - existe um /etc/sysconfig/at ou algo semelhante? Talvez seja apenas um switch de configuração que você tem que virar ...

    
por 24.07.2012 / 22:16
1

Meu voto é para o daemon cron .

Se você precisar executá-lo em horários específicos do dia, mas não na mesma hora todos os dias, criarei um crontab com uma entrada por intervalo de dias com um tempo de execução específico:

Alguns exemplos tirados de crontab(5) :

# run five minutes after midnight, every day
5 0 * * *       command
# run at 2:15pm on the first of every month
15 14 1 * *     command
# run at 10 pm on weekdays
0 22 * * 1-5    command
    
por 24.07.2012 / 22:39
0

O que você quer é o daemon do cron. Faz exatamente o que você quer.

Alimente seu mecanismo de pesquisa favorito para o cron daemon e você tem vários manuais e instruções. man cron e man crontab também é útil.

    
por 24.07.2012 / 18:51