Como gerir um cronjob a cada X minutos?

Estou a rodar um script PHP num cronjob e quero enviar e-mails a cada 5 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.

Author: timmyRS, 2014-09-09

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.
 82
Author: paxdiablo, 2014-09-09 09:27:39

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

Assim podes chamar ao todo coisas assim.

*/5 * * * * php /path/to/script.php > /path/to/logfile.log

 22
Author: Gary Jones, 2014-09-09 09:15:22

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

 3
Author: Justinas, 2014-09-09 09:06:57

2 passos para verificar se um cronjob está a funcionar:

  1. autentique-se no servidor com o utilizador que executa o cronjob
  2. Executar manualmente o comando php:

    / usr/bin / php /mydomain.in/cromail.php

E verifique se aparece algum erro

 2
Author: Paul Giragossian, 2014-09-09 09:06:35
# .---------------- 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
 1
Author: Shakeel, 2018-02-01 13:26:58