Cronjobs bei Hostingwerk

(Kommentare: 0)

Beim Provider Hostingwerk kann man nicht wie bei anderen Hostern wie Strato oder Host Europe zeitgesteuerte Programmaufrufe (Cronjobs) im Hosting-Backend zusammen klicken. Man muss via Shell auf dem Server die User's Crontab setzen bzw. ergänzen.
Das geht nicht mit "SSH> crontab -e" (weil ich nur Normalo-Shared-Hosting-User und nicht root bin).
Es geht aber mit "SSH> crontab mycrontab.txt" - danach mit "SSH> crontab -l" nachschauen, ob's auch gespeichert wurde.
Änderung / Aktualisierung der crontab-Definition geht analog.

Also:
- mycrontab.txt lokal erstellen (Beispiel siehe unten) und auf den Server hochladen, z.B. nach ROOT (mal angenommen, mein Hostingwerk-Username ist "MYNAME" und meine Domain "mydomain.de" hat das Document Root = /srv/www/MYNAME/public/MYDOMAIN/web/, dann ROOT = /srv/www/MYNAME/public/MYOMAIN).
- SSH-Login...
- SSH> cd /srv/www/MYNAME/public/MYDOMAIN/
- SSH> crontab mycrontab.txt
- SSH> crontab -l

Beispiel für eine solche mycrontab.txt mit Job-Aufrufen via wget mit htaccess-User und -Passwort (user:pass@), mit Ausgabe in Log-Datei mit Datumsstempel:

### Jeden Tag morgens um 7:50 Job 1
50 7 * * * wget -q -O /srv/www/MYNAME/public/MYOMAIN/cronjob-1-`date +\%Y\%m\%d-\%H\%M\%S`.txt https://user:pass@mydomain.de/actions.html?action=1 ### Jeden Tag jede volle Stunde Job 2
0 * * * * wget -q -O /srv/www/MYNAME/public/MYOMAIN/cronjob-2-`date +\%Y\%m\%d-\%H\%M\%S`.txt https://user:pass@mydomain.de/actions.html?action=2 ### Jeden Tag jede volle und halbe Stunde Job 3
0,30 * * * * wget -q -O /srv/www/MYNAME/public/MYOMAIN/cronjob-3-`date +\%Y\%m\%d-\%H\%M\%S`.txt https://user:pass@mydomain.de/actions.html?action=3 ### Wenn keine Ausgabe sein soll, dann jeweils "-O /dev/null" ### Wenn kein htaccess-Passwort-Schutz, dann ohne "user:pass@" (P-Wort-Schutz ist ja interessant auf Dev- oder Stage-Systemen und Production im Pre-Release-Stadium...)

 

Obacht: wget schreibt das Ergebnis in eine Datei. Wenn ich keine Ausgabedatei mit -O definiere, landet's (vermtutlich) in meinem User-Verzeichnis. Wenn ich bei einem Alle-5-Minuten Cronjob dann nach 3 Monaten ins Verzeichnis schaue, liegt da eine Menge Holz ... Also am besten die Ausgabe umleiten in eine Datei in einem eigenen Log-Verzeichnis oder - wenn alles normal funktioniert - die Ausgabe ignorieren mit "-O /dev/null".

Nebenbei: Der Job-Befehl kann auch direkt eine PHP-Datei oder ein Shell-Script sein. In meinem Beispiel nutze ich wget mit Aufruf einer "HTML-Seite", weil das Beispiel sich auf Contao 4 bezieht und ich in meinem Script die gesamte Contao-Funktionalität haben wollte (und ich noch keinen Plan habe, wie man das bei Contao 4 mit einer PHP-Datei macht...). ;-)

 

Hilfreiche Links:

Beschreibung der crontab insbesondere bzgl. der Zeitsteuerung:
https://www.linuxwiki.de/crontab

Hinweise zur user's crontab:
https://askubuntu.com/questions/216692/where-is-the-user-crontab-stored

In Contao kann man auch Contao-interne Cronjobs definieren / konfigurieren und eigene Klassen-Methoden dabei aufrufen:
https://docs.contao.org/dev/framework/cron/

 

 

 

Zurück

Kommentare

Einen Kommentar schreiben