Linux - Cronjobs: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 63: Zeile 63:
  
 
== Cronjobs auf all-inkl Server ==
 
== Cronjobs auf all-inkl Server ==
 +
Manche Provider erlauben keinen direkten Zugriff auf Crontab. All-inkl erlaubt seit Mitte 2010  das zeitgesteuerte Ausführen von php Skripten.
 +
Tools -> Cronjobs -> Cronjobs
 +
Neuen Cronjob anlegen und dann die auszuführende Datei angeben (vollständige url)
  
=== update 28.03.2011 ===
+
=== Geschütztes cron Verzeichnis ===
Seit Mitte 2010 kann man bei All-Inkl Cronjobs anlegen.
+
Die Skripte kann man z.B. in ein Webverzeichnis cron/ legen, und dieses dann über .htaccess schützen.
 +
=== Endung phpx ===
 +
Skripte benennt man mit der Endung phpx das umgeht (ungetestet) die Zeitbeschränkung von php
 +
=== Aufruf über exec ===
 +
Der php Interpreter kann auch direkt über das exec Kommando aufgerufen werden. Siehe Typo3 Beispiel.
  
Dazu unter Tools -> Cronjobs -> Cronjobs anlegen
+
=== Kontroll E-Mail ===
 +
Ausgaben des Skriptes werden in eine Mail geschrieben, wenn eine Kontroll-Adresse angegeben ist.
  
hier dann die auszuführende Datei angeben
 
 
Zeitpunkt
 
 
usw.
 
 
Ende update
 
 
Manche Provider erlauben keinen direkten Zugriff auf Crontab. All-inkl erlaubt dafür das Zeitgesteuerte Aufsführen von php Skripten.
 
 
Wenn PHP so konfiguriert ist, daß man das exec (oder auch  einige andere) Kommandos ausführen kann, so ist es möglich dennoch Cronjobs auszuführen. Auch das Anfahren des Command Line Interfae in Typo3 ist darüber möglich.
 
  
 
=== Beispiel: Cronjob für Direct Mail Versand in Typo3 auf all-inkl Server ===
 
=== Beispiel: Cronjob für Direct Mail Versand in Typo3 auf all-inkl Server ===
 +
Wenn PHP so konfiguriert ist, daß man das exec (oder auch  einige andere) Kommandos ausführen kann, so ist es möglich dennoch Cronjobs auszuführen. Auch das Anfahren des Command Line Interface in Typo3 ist darüber möglich.
  
 
Eine Anfrage bei all-inkl ergab folgendes:
 
Eine Anfrage bei all-inkl ergab folgendes:
Zeile 102: Zeile 100:
 
Den absoluten Pfad zum Skript bekommt man über die Funktion phpinfo.  
 
Den absoluten Pfad zum Skript bekommt man über die Funktion phpinfo.  
  
Die Skripte könnte man z.B. in ein Webverzeichnis cron/ legen, und dieses dann über .htaccess schützen.
+
 
  
 
Die Server sind scheinbar so konfiguriert, daß ein Skript mit der Endung phpx direkt über den statischen php-interpreter ausgeführt wird. Damit sollten auch Timeout Probleme kein Problem darstellen.
 
Die Server sind scheinbar so konfiguriert, daß ein Skript mit der Endung phpx direkt über den statischen php-interpreter ausgeführt wird. Damit sollten auch Timeout Probleme kein Problem darstellen.

Version vom 14. August 2013, 21:29 Uhr

Links

http://www.debian-administration.org/articles/56


Cronjobs / Crontab

Cronjobs sind Aufgaben, die regelmäßig zu einer bestimmten Zeit ausgeführt werden. Das können z.B. Serverstatistiken sein, die man jede Nacht generieren möchte.

Anzeigen kann man die Liste der Cronjobs mit dem Befehl:

crontab -l

Editieren kann man die Liste mit:

crontab -e

Nun wird die Liste der Cronjobs mit dem Standardeditor (in der Regel vim) geöffnet.

Hier stehen nun Zeilen dirn, die in etwa, wie die folgende aussehen:

0 */6 * * * /usr/local/confixx/runwebalizer.sh 2>/dev/null >/dev/null
0 20 * * * /srv/scripts/backup.sh 2>&1 | /usr/global/bin/cmail -s "Mail-Subject" mail@admin.de
1 3 * * * /srv/scripts/backup.sh

Die ersten 5 Stellen sind Zahlen, die durch Leerzeichen, oder Tabs getrennt werden dürfen. Dabei stehen die Zahlen der Reihenfolge nach für:

Die Minute zu der das Script ausgeführt werden soll (0-59),

Die Stunde (0-23),

Den Tag (1-31),

Den Monat (1-12),

Den Wochentag (0-6 wobei 0=Sonntag).

Ein * steht jeweils für 'jeden'.

1 3 * * * 

würde also bedeuten: Jeden Tag um 3.01 Uhr

*/6 

bedeutet: "Wenn die Zahl durch 6 teilbar ist", also alle 6 Stunden/Minute, ...

0 */6 * * * 

würde bedeuten jede 6 Stunden und 0 Minuten, also jeden Tag um 0.00, um 6.00, um 12.00 und um 18.00.

Man kann mehrere Zahlen auch durch Komata trennen:

7 1,2,5 * * * würde jeden Tag um 1:07, um 2:07 und um 5:07 ausgeführt werden.

Auch - (bis) ist Möglich

0 0 * * 1-5 würde jeden Wochentag um 0.00 ausgeführt werden.

Nach dieser Zeitangabe folgt das Komando, dass zu den zuvor festgelegten Zeiten ausgeführt werden soll. z.B.: Das Script /srv/scripts/backup.sh aufrufen, welches z.B. wichtige Dateien sichert.

Quelle: http://www.orgapage.net/pages/server/linux/cronjobs.php (1.10.2009)

Cronjobs auf all-inkl Server

Manche Provider erlauben keinen direkten Zugriff auf Crontab. All-inkl erlaubt seit Mitte 2010 das zeitgesteuerte Ausführen von php Skripten.

Tools -> Cronjobs -> Cronjobs 

Neuen Cronjob anlegen und dann die auszuführende Datei angeben (vollständige url)

Geschütztes cron Verzeichnis

Die Skripte kann man z.B. in ein Webverzeichnis cron/ legen, und dieses dann über .htaccess schützen.

Endung phpx

Skripte benennt man mit der Endung phpx das umgeht (ungetestet) die Zeitbeschränkung von php

Aufruf über exec

Der php Interpreter kann auch direkt über das exec Kommando aufgerufen werden. Siehe Typo3 Beispiel.

Kontroll E-Mail

Ausgaben des Skriptes werden in eine Mail geschrieben, wenn eine Kontroll-Adresse angegeben ist.


Beispiel: Cronjob für Direct Mail Versand in Typo3 auf all-inkl Server

Wenn PHP so konfiguriert ist, daß man das exec (oder auch einige andere) Kommandos ausführen kann, so ist es möglich dennoch Cronjobs auszuführen. Auch das Anfahren des Command Line Interface in Typo3 ist darüber möglich.

Eine Anfrage bei all-inkl ergab folgendes:

<Zitat Anfang>

...direkte Shell Befehle können Sie im KAS nicht eingeben. Bitte erstellen Sie sich dazu ein PHP Script mit der Endung .phpx und folgendem Inhalt:...

 <?php
    exec("php /www/htdocs/w00c43b9/typo3/cli_dispatch.phpsh direct_mail masssend",$ausgabe);
    echo "<pre>";
    print_r($ausgabe);
    echo "</pre>";
 ?>

Geben Sie dann die HTTP Adresse zu diesem Script im KAS an. Den gewünschten Zeitintervall für die Ausführung können Sie dann auch im KAS mit angeben.

<Zitat Ende>

Den absoluten Pfad zum Skript bekommt man über die Funktion phpinfo.


Die Server sind scheinbar so konfiguriert, daß ein Skript mit der Endung phpx direkt über den statischen php-interpreter ausgeführt wird. Damit sollten auch Timeout Probleme kein Problem darstellen.