Utilisation de crontab pour exécuter le script toutes les minutes et une autre toutes les 24 heures [fermé]


316

J'ai besoin d'une syntaxe crontab qui devrait exécuter un script PHP spécifique /var/www/html/a.phptoutes les minutes. L'exécution à chaque minute doit commencer à 00h00. L'autre tâche qui doit exécuter un script à 00h00 /var/www/html/reset.php(une fois toutes les 24 heures).

Réponses:


586

chaque minute:

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

toutes les 24 heures (tous les minuit):

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

Consultez cette référence pour savoir comment fonctionne crontab: http://adminschoice.com/crontab-quick-reference , et cet outil pratique pour créer cron jobx: http://www.htmlbasix.com/crontab.shtml


3
Cher Jan! Très bonne réponse. Que diriez-vous d'exécuter un cron toutes les 30 secondes? C'est comme ça? * * * * * / 30 / chemin / vers / php /var/www/html/a.php?
flaab

26
Malheureusement, vous ne pouvez pas exécuter les tâches cron plus fréquemment que chaque minute. Vous devrez utiliser autre chose pour cela.
Jan Hančič

9
Jan Hančič, vous pouvez le faire. Vous avez juste besoin d'utiliser une astuce simple décrite ici: stackoverflow.com/a/1034304/1580615
Ruben

Est-il normal d'exécuter le script .php chaque minute avec cron? Peut-il réduire la productivité du serveur? Y a-t-il d'autres mauvais effets secondaires?
Andrew

@flaab toutes les 30 secondes, vous pouvez essayer quelque chose comme ceci: - * * * * * curl - URL silencieuse> / dev / null 2> & 1 * * * * * sleep 30; curl - URL silencieuse> / dev / null 2> & 1
Shashank Shah

375

Voici le format 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

Je recommande de copier et coller cela en haut de votre fichier crontab afin que vous ayez toujours la référence à portée de main. Les systèmes RedHat sont configurés de cette façon par défaut.

Pour exécuter quelque chose toutes les minutes:

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

Pour exécuter quelque chose à minuit tous les jours:

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

Vous pouvez soit inclure / usr / bin / php dans la commande à exécuter, soit rendre les scripts php directement exécutables:

chmod +x file.php

Démarrez votre fichier php avec un shebang afin que votre shell sache quel interprète utiliser:

#!/usr/bin/php
<?php
// your code here

42
C'est le format de /etc/crontab, qui est un fichier crontab système . Un utilisateur crontab a un format différent, qui n'inclut pas le champ de nom d'utilisateur, car il s'exécute en tant qu'utilisateur qui l'a soumis. Si vous souhaitez exécuter une tâche cron en tant qu'utilisateur non root, vous devez utiliser la crontabcommande pour la soumettre (et ne pas vous soucier de l'emplacement de stockage de la crontab). Ne jouez pas avec, /etc/crontabsauf si vous en avez vraiment besoin.
Keith Thompson

umm ... non, ne fonctionne toujours pas
Madeo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.