Execute o script Linux na hora 'n' no primeiro dia, 'n + 15 mins' no dia seguinte e assim por diante

5

Estou tentando tirar fotos timelapse usando minha webcam. O que eu quero fazer é executar um script à meia-noite de 1 de janeiro, depois às 00:15 de 2 de janeiro, 00:30, 3 de janeiro e assim por diante. Isso pode continuar funcionando para sempre, eu vou desligar quando terminar.

Eu não posso fazer isso com o Cron, posso, sem preencher um crontab com todas as combinações possíveis? Eu não sei mais o que fazer.

    
por Piku 16.12.2009 / 21:40

3 respostas

7

Em vez de criar uma nova tarefa cron em seu script e ter que remover a tarefa cron "antiga" todas as vezes também, você deve usar o comando at . O comando at foi criado exatamente para isso, para permitir que um comando seja executado uma vez em uma data / hora específica. Desta forma, você não terá que remover o antigo trabalho do cron.

Então, você poderia ter seu script, vamos chamá-lo de "capture_from_webcam.sh", assim:

#!/bin/bash

#schedule next capture for tomorrow + 15 minutes
echo "/path/to/capture_from_webcam.sh" | at tomorrow + 15 minutes

# capture from webcam
/path/to/capture_from_webcam.sh

E ter se executar pela primeira vez, à meia-noite do dia 1º de janeiro:

echo "/path/to/capture_from_webcam.sh" | at 00:00 01/01/2010

Para mais informações, consulte a na página man .

    
por 16.12.2009 / 22:47
3

Você pode criar um cron job como parte do script que está planejando executar. Portanto, o cron job deve ser executado uma vez e, em seguida, o script bash cria o próximo 15 minutos mais tarde e assim por diante.

Aqui está uma pergunta anterior que pode ajudar: Como criar uma tarefa cron usando o bash

    
por 16.12.2009 / 21:45
1

Você pode fazer isso via cron.

Você chama o mesmo script cron todos os dias ao mesmo tempo, mas adiciona uma instrução de suspensão ao início do script que dorme 15m * date +'%j' , neste dia do ano, [001 ... 366] .

    
por 16.12.2009 / 21:44