Como gerir um cronjob a cada X minutos?
a minha actual (crontab) cronjob:
10 * * * * /usr/bin/php /mydomain.in/cromail.php > /dev/null 2>&1
o cronmail.o php é o seguinte:
<?php
$from = 'D'; // sender
$subject = 'S';
$message = 'M';
$message = wordwrap($message, 70);
mail("[email protected]", $subject, $message, "From: $from\n");
?>
Mas não recebo um e-mail em 30 minutos com esta configuração.
5 answers
Num ficheiro crontab
, os Campos São:
- minuto da hora. Hora do dia.
- Dia do mês.
- mês do ano.
- Dia da semana.
Então:
10 * * * * blah
Significa executar blah
a 10 minutos de cada hora.
Se quiser cada cinco minutos, use:
*/5 * * * * blah
Significa a cada minuto, mas apenas a cada quinto, ou:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * blah
Para executáveis mais antigos cron
que não compreendem a notação */x
.
Se ele ainda parece não estar a funcionar depois disso, mude o comando para algo como:
date >>/tmp/debug_cron_pax.txt
E monitoriza esse ficheiro para garantir que algo está a ser escrito a cada cinco minutos. Se sim, há algo de errado com os teus scripts PHP. Se não, há algo de errado com o teu demónio.
O seu CRON deve ser assim:
*/5 * * * *
O CronWTF é realmente útil quando precisa de testar a sua configuração do CRON.
Pode ser uma boa ideia canalizar a saída para um ficheiro de registo para que possa ver se o seu programa também está a lançar quaisquer erros - uma vez que não os irá ver no seu terminal.
Também tente usar um shebang no topo do seu ficheiro PHP, para que o sistema saiba onde encontrar o PHP. Tais como:
#!/usr/bin/php
*/5 * * * * php /path/to/script.php > /path/to/logfile.log
Estás a pôr o teu cron a funcionar aos 10 minutos em cada hora.
Para ajustar para every 5 mins
mudar para */5 * * * * /usr/bin/php /mydomain.in/cronmail.php > /dev/null 2>&1
2 passos para verificar se um cronjob está a funcionar:
- autentique-se no servidor com o utilizador que executa o cronjob
-
Executar manualmente o comando php:
/ usr/bin / php /mydomain.in/cromail.php
E verifique se aparece algum erro
# .---------------- 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
Para marcar Para x minutos precisamos de definir x minuter no primeiro argumento e, em seguida, o caminho do seu script
Durante 15 minutos
*/15 * * * * /usr/bin/php /mydomain.in/cromail.php > /dev/null 2>&1