Usando o crontab para executar scripts a cada minuto e outro a cada 24 horas [fechado]

316

Eu preciso de uma sintaxe crontab que deve executar um script PHP específico a /var/www/html/a.phpcada minuto. A execução a cada minuto deve começar às 00:00. A outra tarefa que deve executar um script às 00:00 /var/www/html/reset.php(uma vez a cada 24 horas).

Michael
fonte

Respostas:

586

todo minuto:

* * * * * /path/to/php /var/www/html/a.php

a cada 24 horas (a cada meia-noite):

0 0 * * * /path/to/php /var/www/html/reset.php

Consulte esta referência para saber como o crontab funciona: http://adminschoice.com/crontab-quick-reference , e esta ferramenta útil para criar cron jobx: http://www.htmlbasix.com/crontab.shtml

Jan Hančič
fonte
3
Dear Jan! Ótima resposta. Que tal executar um cron a cada 30 segundos? É assim? * * * * * / 30 / caminho / para / php /var/www/html/a.php?
Flaab 26/11/12
26
Infelizmente, você não pode executar tarefas cron com mais frequência do que a cada minuto. Você terá que usar outra coisa para isso.
Jan Hančič
9
Jan Hančič, você pode fazer isso. Você só precisa usar um truque simples descrito aqui: stackoverflow.com/a/1034304/1580615
Ruben
É prática normal executar o script .php a cada minuto com o cron? Pode reduzir a produtividade do servidor? Existem outros efeitos colaterais ruins?
19716 Andrew
@ flaab a cada 30 segundos, você pode tentar algo assim: - * * * * * curl - URL silencioso> / dev / null 2> & 1 * * * * * sleep 30; curl - URL silencioso> / dev / null 2> & 1
Shashank Shah
375

Este é o formato do / etc / crontab:

# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

Eu recomendo copiar e colar isso na parte superior do seu arquivo crontab para que você tenha sempre a referência à mão. Os sistemas RedHat são configurados dessa maneira por padrão.

Para executar algo a cada minuto:

* * * * * username /var/www/html/a.php

Para executar algo à meia-noite de todos os dias:

0 0 * * * username /var/www/html/reset.php

Você pode incluir / usr / bin / php no comando a ser executado ou pode tornar os scripts php diretamente executáveis:

chmod +x file.php

Inicie seu arquivo php com um shebang para que seu shell saiba qual intérprete usar:

#!/usr/bin/php
<?php
// your code here
Greg
fonte
42
Esse é o formato de /etc/crontab, que é um arquivo crontab do sistema . Um crontab de usuário tem um formato diferente, que não inclui o campo de nome de usuário, pois é executado como o usuário que o enviou. Se você deseja executar uma tarefa cron como um usuário não raiz, use o crontabcomando para enviá-la (e não se preocupe com o local em que o crontab está armazenado). Não mexa com a /etc/crontabmenos que você realmente precise.
18713 Keith Thompson
umm ... não, ainda não está funcionando
Madeo 19/02