Bei vielen Webhosting Paketen gibt es die Möglichkeit einen Cronjob einzurichten. Leider musste ich nach dem Umstieg von einem 1&1 Managed Homepage Server auf einen 1&1 Linux Root Server feststellen, dass diese Option im Control Center nicht mehr verfügbar war. Auch meine Suche nach dem „Crontab“ in Plesk war erst einmal erfolglos, da die Funktion an der beschriebenen Stelle nicht zu finden war. Durch Zufall habe ich sie dann doch gefunden.
Um einen Cronjob anzulegen navigiert ihr im Hauptmenü zum Abschnitt Server und wählt dort „Geplante Aufgaben“. Anschließend bekommt ihr eine Liste mit allen Benutzern angezeigt, die auf eurem Server vorhanden sind. Jedem dieser Benutzer könnt ihr einen Cronjob zuteilen. Um ein PHP-Skript auszuführen solltet ihr den Benutzer wählen, der auf eurem Server den Apache-Server ausführt. Dies ist meistens der Benutzer namens „wwwrun“. Blättert also einfach auf die entsprechende Seite oder sucht nach dem Benutzer:
Nachdem ihr den Benutzer ausgewählt habt klickt auf „Weiter“. Ihr gelangt nun auf die Seite mit den „Crontab-Aufgaben“ für den entsprechenden Benutzer. Hier hat sich also die Crontab Einstellung versteckt. Ihr könnt nun oben eine „Neue Aufgabe hinzufügen“:
In die Felder Minute, Stunde und Tag des Monat könnt ihr entweder eine Zahl eingeben oder einen Stern, um den Cronjob für jeden Wert auszuführen. In dem Beispiel wird als der Cronjob an jedem Tag eines Monat um 00:00 Uhr ausgeführt. Wenn ihr den Cronjob auch jeden Monat und an jedem Tag einer Woche ausführen lassen möchtet, dann tragt unten ebenfalls einen Stern ein.
Wenn ihr ein lokales Programm oder ein PHP-Skript ohne Parameter starten möchtet, könnt ihr einfach den Befehlsnamen in der Feld „Befehl“ eintragen. Wenn ihr allerdings etwas in der Form „php /srv/www/vhosts/example.com/httpdocs/skript.php?var1=value
“ eintragt, dann versucht PHP die Datei mit dem Namen „skript.php?var1=value
“ zu finden, die es natürlich nicht gibt. Ein sehr einfacher Trick dies zu lösen ist die Verwendung von wget. Dieser Befehlt wird normalerweise dazu genutzt eine Datei von einer Website zu laden. Damit aber nicht eine Datei mit dem Namen „skript.php?var1=value“ erzeugt wird, nutzen wir den Parameter „--spider
„, der den Download unterdrückt. Wir führen also somit einfach nur ein PHP-Skript auf einer beliebigen URL aus. Sobald alle Einstellungen vorgenommen sind, könnt ihr die Einstellungen mit einem Klick auf „OK“ speichern.
Ihr solltet nun in der Übersicht euren eben erzeugt Cronjob sehen können. Sobald der Zeitpunkt, den ihr angegeben habt erreicht ist, sollte das Skript ausgeführt werden. Zu den Cronjobs wird ein Bereicht erstellt und an eine E-Mail-Adress verschickt. Diese könnt ihr über „Einstellungen“ eintragen:
Bei meinen Cronjobs wurde bisher noch keine E-Mail verschickt. Eventuell wird auch nur im Fehlerfall eine Mail mit der Fehlermeldung verschickt. Oder aber mein Server leitet die Mail nicht korrekt an den externen 1&1 Mailserver weiter, da es sich bei der E-Mail-Adresse um eine Domain handelt, die er selbst verwaltet. Sobald ich das Rätsel gelöst habe werde ich euch natürlich davon berichten.
Ich hoffe der Artikel konnte euch weiterhelfen. Kennt ihr vielleicht auch noch eine tollt versteckte Funktion? Oder sucht ihr eine bestimmte Einstellung? Über Kommentare würde ich mich wie immmer sehr freuen.
[…] man einen Cronjob anlegt könnte ihr auf meinem Artikel mit dem Titel Plesk Cronjob für ein PHP-Skript mit Parametern einrichten nachlesen, wobei ihr hier anstelle der PHP Skripts den oben beschriebenen Befehl einfügt. Da […]
„Bei meinen Cronjobs wurde bisher noch keine E-Mail verschickt. Eventuell wird auch nur im Fehlerfall eine Mail mit der Fehlermeldung verschickt. Oder aber mein Server leitet die Mail nicht korrekt an den externen 1&1 Mailserver weiter, da es sich bei der E-Mail-Adresse um eine Domain handelt, die er selbst verwaltet.“
>>
Bei mir kam ne Mail im Fehlerfall mit folgendem Text:
–17:02:01– https://xxxx.php?y=xxx
=> `xxxx.php?y=xxx‘
Resolving blabla.de… xxx.xxx.xxx.xxx
Connecting to blabla.de|xxx.xxx.xxx.xxx|:443… connected.
ERROR: Certificate verification error for blabla.de: self signed certificate in certificate chain
ERROR: certificate common name `blabla.de‘ doesn’t match requested host name `blabla.de‘.
To connect to blabla.de insecurely, use `–no-check-certificate‘.
Unable to establish SSL connection.
Es scheint wirklich so zu sein, dass nur im Fehlerfall eine Mail verschickt wird. Ich persönlich finde das aber auch gut so. Denn wenn man z.B: einen Cron-Job alle 10min ausführt (was ich bei einem auch tue) dann würde das Postfach am Tag mit 144 Mails zugespamt werden.
die email wird verschickt sobald die php datei eine ausgabe erzeugt. war zumindest bei mir so.
hallo ,
ich habe das nach der beschreibung probiert aber es geht nicht.
wie muss der befehl genau lauten , wenn ich in plesk für folgende datei den cronjob brauche.
die datei heisst invoice.php und befindet sich im ordner cron_jobs
ich habe es auf diese art versucht aber es kommt diese fehlermeldung
invoice_cron.php: Permission denied
Cannot write to `invoice_cron.php‘ (Permission denied).
mein befehl sah so aus :
wget http://meineDomain.de/cron_jobs/invoice_cron.php?var1=value–spider
ich habe es versucht den ordner und die datei mit chmod 777 und auch 755 recht zu geben aber bei beidne die fehlermeldung
hilfeeeeee
Hallo Sara.
Ich glaube was dir fehlt ist ein Leerzeichen vor dem „–spider“. Dieser Parameter sorgt ja gerade dafür, dass keine Datei erzeugt wird. Daher musst du dann auch keine Rechte auf irgendwelche Ordner setzen.
hallo bernhard , danke für deine antwort.
ich kriege das nicht gebacken. ich hab es auf verschiedene arten versucht aber es kommt per email immer ne fehlermeldung.
hier die versuche :
#############################################################
wget http://domain.de/cron_jobs/invoice_cron.php?var1=value — spider
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text language=“/html“][/text]
Remote file exists and could contain further links,
but recursion is disabled — not retrieving.
################################################
wget http://domain.de/cron_jobs/invoice_cron.php?var1=value – -spider
wget: invalid option — s
Usage: wget [OPTION]… [URL]…
Try `wget –help‘ for more options.
########################################################
wget http://domain.de/cron_jobs/invoice_cron.php?var1=value –spider
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text language=“/html“][/text]
Remote file exists and could contain further links,
but recursion is disabled — not retrieving.
##########################################################
wget http://domain.de/cron_jobs/invoice_cron.php?var1=value -spider
HTTP request sent, awaiting response… 200 OK
Length: 7199 (7.0K) [text language=“/html“][/text][/text]
index.html: Permission denied
Cannot write to `index.html‘ (Permission denied).
#############################################################
kannst du mir nicht den code schreiben und ich kopiere ihn dann ?
danke
sara
Also bei mir sieht ein Befehl wie folgt aus:
wget http://www.domain.de/script.php?var=value –spider
Wenn ich ihn per SSH auf dem Server ausführe, erhalte ich folgende Ausgabe:
Spider mode enabled. Check if remote file exists.
–2011-04-18 22:31:11– http://www.domain.de/script.php?var=value
Resolving http://www.domain.de... 12.345.678.90
Connecting to http://www.domain.de|12.345.678.90|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: unspecified
Remote file exists and could contain further links,
but recursion is disabled — not retrieving.
Hast du mal versucht den Befehl über die Konsole auszuführen? Wenn ja, welche Ausgabe bekommst du?
hallo bernhard ,
es hat funktioniert , es lag am code, wahrscheinlich wegen den strichen und vielleicht weil ich das www. in der domain vergessen hatte.
egal hauptsache es geht jetzt hehe
ohen dich hätte ich das nicht geschafft !!!
DANKE, DU BIST EIN PROFI
Schön, dass ich helfen konnte!
Hallo,
auch ich sage, vielen Dank !
Danke, habe mich gefreut, diesen Artikel als Anleitung zu finden, wer weiß, wann ich sonst den cron-job überhaupt gefunden hätte unter PLESK 😉
Michael
Hallo,
auch ich nutze PLESK für die Server Administration und die Anleitung hat mir sehr geholfen. Vielen Dank.
Hallo Bernhard,
Die Lösung mit wget ist wirklich prima! Vielen Dank!
Hallo,
vielen Dank für die ausführliche Beschreibung. Wir testen gerade, ob das auch mit mit einem direkten shell-Befehl funktioniert. Hat damit schon jemand Erfahrungen sammeln können?
Mit einem Shell Befehl funktioniert es nur, wenn man im Skript nicht auf auf SUPERGLOBALS wie z.B. $_REQUEST zugreift. Man müsste also in diesem Fall eine Abfrage einfügen, ob das Skript per Shell oder per Browser-Request aufgerufen wurde. Das war auch der Grund für meine Lösung mit wget, da diese eben ein Skript genau so aufrufen kann, wie ein Aufruf über einen Browser.
Hallo,
ich habe 3 cronjobs eingerichtet.
2 davon laufen einwandfrei, wenn ich curl vor den Befehl eingebe.
Einer läuft nicht.
Hier das Ergebnis:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0
0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0
woran kann das liegen?
Hallo Bernhard 😉
Deinem Kommentar fehlen leider die notwendigen Informationen, um dir eventuell sagen zu können, was bei dem Cron-Job nicht funktioniert. Eventuell ist einfach der Befehl ungültig und er wird deshalb sofort abgebrochen.
Ich würde dich aber bitten, eine solche Frage wirklich einem Experten zu stellen. Es ist nicht Aufgabe dieses Artikels, eine Allgemeine Anleitung zu Cron-Jobs zu geben.
Am besten wird dir vermutlich bei den Profils von Serverfault geholfen. Dort findest du eventuell auch fertige Lösungen von Nutzern, die ähnliche Probleme hatten. Es ist auf jeden Fall einen Versuch wert.
Hey, mir ist aufgefallen, dass zwei Striche hintereinander ( — ) als ein langer Strich dargestellt wird und daher der Fehler resultiert, denn im Bild sieht man ja, dass es sich um ein zwei Striche handelt.
ciao
Danke für den Hinweis. Ich hatte das damals schon manuell behoben, aber bei der Migration auf mein neues Theme ist da wohl wieder was durcheinander gekommen.
Hi Bernhard,
Danke für dein Tutorial. Irgendwie sehe ich keine Reaktion auf meinem Server. Habe ich was falsch gemacht. Schick dir mal den Screenshot.
http://prntscr.com/8ocr01
Hallo Peter,
das sieht ja nach einer ziemlich neuen Version von Plesk aus. Ich habe schon seit Langem selbst kein Plesk mehr im Einsatz. Was mir bei deinem Screenshot aber aufgefallen ist, sind die Zahlenbereiche. Ich wüsste nicht, dass die in einem Cronjob so erlaubt sind. Versuche es doch einfach mal jeweils mit einem Stern, so wie du es auch in meinen Screenshots sehen kannst.
Eine Reaktion wirst du übrigens auf der Seite zur Einstellung des Cron-Job vermutlich nicht sehen.
Danke, Dein Beitrag hat mir mein Cronjob Problem gelöst; vor allem der Hinweis mit dem –spider war sehr nützlich!