Você deve usar at
em vez de cron
, ele permitirá que você execute a tarefa exatamente uma vez. Poderia então reprogramar a si mesmo.
Bem, eu gostaria de sugerir algumas melhorias para sua própria solução - se você mantiver isso. No entanto, ainda será necessário executar o script a cada minuto via cron
:
Em vez de manipular qualquer configuração ou rastreamento quando o script foi executado pela última vez, você pode atingir o mesmo objetivo com o carimbo de data / hora do UNIX:
Um dia tem 60*60*24 = 86400
segundos. Se você adicionar 3*60 = 480
de seus requisitos, terá 86880
segundos - e esse é exatamente o intervalo que você deseja que seu script seja executado. Dentro do script, você pode agora verificar se a% do tempo atual do UNIX (modulo) é igual a zero e abortar de outra forma.
Se você precisar ter uma primeira execução explícita, como 5 de junho de 2012, 4:00, poderá subtrair o registro de data e hora associado ( 1338861600
) da hora local primeiro, verifique se não é menor que zero e prossiga com a diferença ...
Naturalmente, você também pode permitir que o script modifique sua própria crontab
entry, mas isso é arriscado e também um pouco estranho.