Como definir um deslocamento para trabalhos agendados?

1

Eu tenho sete scripts para lançar que demoram muito para serem processados, então, para minha primeira ideia, eu escrevi meu crontab assim:

0 */3 0 0 0 /home/personal/my-script-1
0 */3 0 0 0 /home/personal/my-script-2
0 */3 0 0 0 /home/personal/my-script-3
0 */3 0 0 0 /home/personal/my-script-4
...

Nesse caso, todos os meus scripts estão sendo lançados juntos. O que eu quero é começar com um offset. Então eu mudei meu crontab assim e coloquei um deslocamento de 5 min entre os trabalhos:

0 0-59/3 0 0 0 /home/personal/my-script-1
0 5-59/3 0 0 0 /home/personal/my-script-2
0 10-59/3 0 0 0 /home/personal/my-script-3
0 15-59/3 0 0 0 /home/personal/my-script-4
...

Mas não tenho certeza das minhas edições. Meus scripts serão programados para serem lançados com um espaço de três horas e compensados por 5 minutos?

    
por Moerin 01.02.2015 / 22:10

1 resposta

6

Eu não tenho medo.

O segundo campo do crontab especifica as horas do dia em que o script será executado. Assim, o primeiro será executado a cada três horas das 0h00 às 59h00 (o que é inválido! Horas apenas vão de 0 a 23), o próximo a cada três horas das 5h00 às 59h00 e assim por diante.

Se você quiser definir o minuto, é necessário usar o campo primeiro .

0 */3 0 0 0 /home/personal/my-script-1
5 */3 0 0 0 /home/personal/my-script-2
10 */3 0 0 0 /home/personal/my-script-3
15 */3 0 0 0 /home/personal/my-script-4

Isso executará o segundo script às 0h05, 3h05, etc., o terceiro script às 0h10, 3h10, etc.

Melhor ainda, se os scripts sempre devem ser executados na mesma sequência, basta escrever outro script que os chame todos em sequência. Dessa forma, você não terá problemas se um dos scripts demorar seis minutos ou mais.

    
por 01.02.2015 / 23:18

Tags