it-swarm.com.de

cron-Befehl zur Ausführung aller 12 Stunden

Ich brauche den Befehl unix cron, um alle 12 Stunden zu laufen.

Ich habe über 500 Unter-Blogs auf meinem Server. 

Dies ist die Datei, die ich alle 12 Stunden ausführen möchte

http://*.mysite.com/somedir/index.php

Wo ist meine Subdomain meiner Blogs?.

Ich brauche Cron-Befehl für alle Blogs. Kann ich alle mit einem einzigen Befehl ausführen? Oder muss ich für jedes Blog einen Befehl erstellen?

39
user1091558

Eine Crontab-Datei enthält fünf Felder zur Angabe von Tag, Datum und Uhrzeit, gefolgt von dem Befehl, der in diesem Intervall ausgeführt wird.

*     *     *   *    *        command to be executed
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- day of week (0 - 6) (Sunday=0)
|     |     |   +------- month (1 - 12)
|     |     +--------- day of        month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

* im Wertefeld oben bedeutet alle zulässigen Werte in Klammern für diese Spalte.

Sie können 0 1,13 * * * verwenden, dh für jeden AM und jeden Nachmittag.

0 1,13 * * * rm /var/www/*/somedir/index.php > /home/someuser/cronlogs/some.log 2>&1

wobei * durch verschiedene Domainnamen ersetzt werden kann.

104
Anil

Ich denke, der richtige Weg ist -> 1 */12 * * * (eigentlich, jede Zahl in der Minutenposition wird den Trick ausführen.)

Wenn Sie -> * */12 * * * einstellen, wird es jede Minute um 12 Uhr und erneut um 24 Uhr ausgeführt.

22
Giovani Dardani

Vorausgesetzt, Ihre Websites leben in/var/www/sitename und Sie haben die PHP-Shell in/usr/bin/php installiert. Sie können problemlos einen Cron-Job erstellen, der alle diese Dateien ausführt.

lauf 

crontab -e

und füge diese Zeile hinzu

42 */12 * * * /usr/bin/php /var/www/*/somedir/index.php  >> ~/cronjob.log 2>&1

Das * hier in/var/www/*/somedir ist nur ein Wildcart. Dies bedeutet, dass jedes Verzeichnis in Ihrem Ordner/var/ww abgefangen wird.

f.ex: 

[[email protected] ~]$ ls -l temp
total 28
-rw-rw-r--. 1 jens jens 1641 Feb 21 16:12 somefile.py
drwxrwxr-x. 2 jens jens 4096 Feb 22 15:10 test
drwxrwxr-x. 2 jens jens 4096 Feb 22 15:10 test2
drwxrwxr-x. 2 jens jens 4096 Feb 22 15:10 test3
drwxr-xr-x. 8 jens jens 4096 Jan 27 10:21 emptydir
-rw-rw-r--. 1 jens jens  548 Jan 27 16:15 Unsaved Document 1

[[email protected] ~]$ ls temp/*/testfile.php 
temp/test2/testfile.php  temp/test3/testfile.php  temp/test/testfile.php

Wie Sie sehen, gibt dies die Datei testfile.php in jedem Unterordner von temp zurück, nämlich Ordner test, test2 und test3. Emptydir ist auch ein Ordner, aber da es keine testfile.php enthält, passiert nichts damit.

8
Jens Timmerman

Verwenden Sie "*/12" für "alle 12 Stunden".

6
Geremia

Sie benötigen ein Master-Skript (von cron aufgerufen), das die Liste der Sites erweitert, und ruft "/ usr/bin/php /var/www/*/somedir/index.php" auf, wobei das '*' ersetzt wird durch einen Listeneintrag. Dies kann in einem Shellscript, einem Perl- oder Python-Skript oder sogar einem PHP-Skript erfolgen. Für sie könnte dies sein: (ungeprüft)

#!/bin/sh
cd /home/subdir/for/cron

LIST="a b c d e f g h i j k l m o p q r s t u v w x y z"

for x in $LIST; do
   /usr/bin/php /var/www/${x}/somedir/index.php 2>$1 > /tmp/${x}.log
done

Wenn es unpraktisch ist, die Liste so zu codieren, gibt es andere Methoden: backticks oder read < file_with_all_the_names_in_it

6
wildplasser

Schreibe den Befehl in die Konsole

crontab -e

bearbeiten mit Editor (Ich mag Nano)

zeile hinzufügen

0 1,13 * * * php /home/catalog/public_html/crons/index.php

schließen mit

drücken Sie Strg + x

drücken Sie y und drücken Sie dann die Eingabetaste .__ fertig.

Prüfen Sie, ob mit gespeichert wurde 

crontab -l

befehl

wenn Sie testen möchten, ob es funktioniert, testen Sie es einfach mit

php /home/catalog/public_html/crons/index.php

befehl

1
Matas Lesinskas