Verwenden von crontab zum Ausführen eines Skripts jede Minute und eines weiteren alle 24 Stunden [geschlossen]

316

Ich benötige eine Crontab-Syntax, die /var/www/html/a.phpjede Minute ein bestimmtes PHP-Skript ausführen soll . Die Ausführung in jeder Minute muss um 00:00 Uhr beginnen. Die andere Aufgabe, die um 00:00 Uhr /var/www/html/reset.php(einmal alle 24 Stunden) ein Skript ausführen muss .

Michael
quelle

Antworten:

586

jede Minute:

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

alle 24 Stunden (jede Mitternacht):

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

In dieser Referenz erfahren Sie, wie crontab funktioniert: http://adminschoice.com/crontab-quick-reference und dieses praktische Tool zum Erstellen von cron jobx: http://www.htmlbasix.com/crontab.shtml

Jan Hančič
quelle
3
Lieber Jan! Gute Antwort. Wie wäre es, alle 30 Sekunden einen Cron laufen zu lassen? Ist es so * * * * * / 30 / path / to / php /var/www/html/a.php?
Flaab
26
Leider können Sie Cron-Jobs nicht häufiger als jede Minute ausführen. Sie müssen dafür etwas anderes verwenden.
Jan Hančič
9
Jan Hančič, das können Sie. Sie müssen nur einen einfachen Trick verwenden, der hier beschrieben wird: stackoverflow.com/a/1034304/1580615
Ruben
Ist es üblich, .php-Skripte jede Minute mit cron auszuführen? Kann es die Serverproduktivität reduzieren? Gibt es noch andere schlimme Nebenwirkungen?
Andrew
@flaab alle 30 Sekunden können Sie Folgendes versuchen: - * * * * * curl --silent URL> / dev / null 2> & 1 * * * * * sleep 30; curl --silent URL> / dev / null 2> & 1
Shashank Shah
375

Dies ist das Format von / 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

Ich empfehle, diese zu kopieren und oben in Ihre Crontab-Datei einzufügen, damit Sie immer die Referenz zur Hand haben. RedHat-Systeme werden standardmäßig so eingerichtet.

Um jede Minute etwas zu laufen:

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

Um jeden Tag um Mitternacht etwas laufen zu lassen:

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

Sie können entweder / usr / bin / php in den auszuführenden Befehl aufnehmen oder die PHP-Skripte direkt ausführbar machen:

chmod +x file.php

Starten Sie Ihre PHP-Datei mit einem Shebang, damit Ihre Shell weiß, welchen Interpreter Sie verwenden sollen:

#!/usr/bin/php
<?php
// your code here
Greg
quelle
42
Das ist das Format von /etc/crontab, das eine System- Crontab-Datei ist. Ein Benutzer crontab hat ein anderes Format, das das Feld Benutzername nicht enthält, da es als der Benutzer ausgeführt wird, der es gesendet hat. Wenn Sie einen Cron-Job als Nicht-Root-Benutzer ausführen möchten, sollten Sie den crontabBefehl zum Senden verwenden (und sich keine Gedanken darüber machen, wo die Crontab gespeichert ist). Spielen Sie nicht herum, es /etc/crontabsei denn, Sie müssen es wirklich.
Keith Thompson
ähm ... nein, funktioniert immer noch nicht
Madeo