Usando crontab para ejecutar el script cada minuto y otro cada 24 horas [cerrado]

316

Necesito una sintaxis crontab que debe ejecutar un script PHP específico /var/www/html/a.phpcada minuto. La ejecución en cada minuto debe comenzar a las 00:00. La otra tarea que debe ejecutar un script a las 00:00 /var/www/html/reset.php(una vez cada 24 horas).

Miguel
fuente

Respuestas:

586

cada minuto:

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

cada 24 horas (cada medianoche):

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

Consulte esta referencia para ver cómo funciona crontab: http://adminschoice.com/crontab-quick-reference , y esta práctica herramienta para construir cron jobx: http://www.htmlbasix.com/crontab.shtml

Jan Hančič
fuente
3
Querido Jan! Gran respuesta. ¿Qué tal ejecutar un cron cada 30 segundos? ¿Es asi? * * * * * / 30 / ruta / a / php /var/www/html/a.php?
flaab
26
Lamentablemente, no puede ejecutar trabajos cron con más frecuencia que cada minuto. Tendrás que usar algo más para eso.
Jan Hančič
99
Jan Hančič, puedes hacer esto. Solo necesita usar un truco simple descrito aquí: stackoverflow.com/a/1034304/1580615
Ruben
¿Es una práctica normal ejecutar el script .php cada minuto con cron? ¿Puede reducir la productividad del servidor? ¿Hay otros efectos secundarios negativos?
Andrew
@flaab por cada 30 segundos puede intentar algo como esto: - * * * * * curl - URL silenciosa> / dev / null 2> & 1 * * * * * sleep 30; curl - URL silenciosa> / dev / null 2> & 1
Shashank Shah
375

Este es el formato de / 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

Recomiendo copiar y pegar eso en la parte superior de su archivo crontab para que siempre tenga a mano la referencia. Los sistemas RedHat se configuran de esa manera de manera predeterminada.

Para ejecutar algo cada minuto:

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

Para ejecutar algo a la medianoche de cada día:

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

Puede incluir / usr / bin / php en el comando para ejecutar, o puede hacer que los scripts php sean directamente ejecutables:

chmod +x file.php

Inicie su archivo php con un shebang para que su shell sepa qué intérprete usar:

#!/usr/bin/php
<?php
// your code here
Greg
fuente
42
Ese es el formato de /etc/crontab, que es un archivo crontab del sistema . Un crontab de usuario tiene un formato diferente, que no incluye el campo de nombre de usuario, ya que se ejecuta como el usuario que lo envió. Si desea ejecutar un trabajo cron como usuario no root, debe usar el crontabcomando para enviarlo (y no preocuparse de dónde está almacenado el crontab). No pierdas el tiempo a /etc/crontabmenos que realmente lo necesites.
Keith Thompson
umm ... no, todavía no funciona
Madeo