Faça o trabalho do crontab a 0 hora

0

Eu tento executar algum comando assim:

*/10 0,1 * * * $BPY some_script.py

Significa que quero executá-lo a cada 10 minutos entre 0:00 e 1:00.

MAS: Eu vejo no meu / var / log / cron que não é executado. E mais: é a única tarefa que não está sendo executada (então meu cron funciona bem em outros casos). O sysyem operacional é o Debian GNU / Linux 6.0.

O que estou fazendo de errado? A hora ruim é zero?

update: $ BPY apenas mantém o caminho para o executável python. Outros comandos também o usam e funciona bem.

Bem, se fosse realmente um comando ruim - pelo menos apareceria em / var / log / cron

update 2: O script funciona bem com outros hours (por exemplo, * * * * * executa perfeitamente a cada minuto e faz exatamente o que eu quero)

    
por Nikita Hismatov 07.10.2012 / 20:46

1 resposta

1

Parece que o cron não possui $BPY definido. É some_script.py que precisa ser executado? Qual é o objetivo de $BPY ? Além disso, você provavelmente precisará do caminho completo do script, não apenas do próprio nome do script.

Assumindo que some_script.py é o verdadeiro script executado, tente apenas executá-lo (com o caminho completo !!)

Em seus comentários abaixo desta resposta, você disse que o $BPY é o caminho do Python. Em vez de fazer isso, você deve usar um shebang para especificar o caminho completo do interpretador que será usado. Um shebang comum especificando python é: #!/usr/bin/python . Esta deve ser a primeira linha do seu arquivo some_script.py .

No que diz respeito à sintaxe ...

O formato Cron é uma maneira simples, mas poderosa e flexível de definir o tempo e a frequência de várias ações.

o formato cron consiste em campos separados por espaços em branco:

[Min] [Hr] [Day of Month] [Month of Year] [Day of Week]

O diagrama a seguir mostra em que consiste:

* * * * *
| | | | |
| | | | +---- Day of the Week   (range: 0-6, 0 standing for Sunday; Mon,Tue, etc.
| | | |                          Most OS's recognize Sunday as 0 or 7)
| | | +------ Month of the Year (range: 1-12 or Jan, Feb, etc)
| | +-------- Day of the Month  (range: 1-31)
| +---------- Hour              (range: 0-23)
+------------ Minute            (range: 0-59)

Qualquer um desses 6 campos pode ser um asterisco ( * ). Isso significaria todo o intervalo de valores possíveis, ou seja, a cada minuto, cada hora, etc. Nos primeiros quatro campos.

Qualquer campo pode conter uma lista de valores separados por vírgulas (por exemplo, 1,3,7 ) ou um intervalo de valores (dois inteiros separados por um hífen, por exemplo, 1-5 ).

Após um asterisco ( * ) ou um intervalo de valores, você pode usar o caractere / para especificar que os valores sejam repetidos várias vezes com um determinado intervalo entre eles. Por exemplo, você pode escrever 0-23/2 no campo Hora para especificar que alguma ação deve ser executada a cada duas horas (terá o mesmo efeito que 0,2,4,6,8,10,12,14,16,18,20,22 ). Um valor de */4 no campo Minuto significa que a ação deve ser executada a cada 4 minutos. 1-30/3 significa o mesmo que 1,4,7,10,13,16,19,22,25,28 .

Nos campos Mês e Dia da semana, você pode usar nomes de meses ou dias das semanas abreviados para as três primeiras letras ( Jan , Feb , ..., Dec ou Mon , Tue , ..., Sun ) em vez de seus valores numéricos.

Como alternativa, você pode usar palavras-chave especiais em vez dos primeiros 5 campos especificados acima:

string         meaning
------         -------
@reboot        Run once, at startup.
@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

Este formato alternativo não é suportado em sistemas operacionais proprietários mais antigos, como o SCO Unix.

    
por 07.10.2012 / 21:33

Tags