• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Cronjobs für Anfänger

derdavdn

Newbie
Hallo allerseits!

Eines vorneweg, ich kenne mich leider bei Linux kaum bis wenig aus. Mir wurde aber ein Debian-Server 'vorgesetzt' auf dem ich so meine php-Skripte verfasse. Nun würde ich Cronjobs benötigen, habe aber üebrhaupt keine Ahnung, wie ich es anstelle, diese zum Laufen zu bekommen.
Wie komme ich zu einer Anleitung, die auch ich verstehe ;)
Habt ihr da einen nützlichen Link - idealerweise auf deutsch?

Danke!
David.
 

Falkenstein

Hacker
cron-Jobs kann man ganz leicht mit webmin erstellen.
www.webmin.com
Oder du erstellst z.B. ein Script mit der ersten Zeile
#!/bin/sh
im Verzeichnis /etc/cron.hourly, cron.daily oder was auch immer. (man cron)
Oder du fügst das beschriebene Script in die /etc/crontab ein. (man crontab)
 

nbkr

Guru
Webmin hat zur Zeit einen Sicherheitsbug. Würde ich nicht einsetzen. Die cron.hourly Scripte sind nur für root zugänglich. Wenn Du einen individuellen Cronjob brauchst einfach als User in der Konsole

Code:
crontab -e

eingeben. Damit wird eine Editor gestartet (vermutlich nvi oder vim) mit dem man den Cronjob eingeben kann. Die Syntax verrät

Code:
man crontab
 

Falkenstein

Hacker
Die Lücke in webmin wurde doch laut heise mit dem aktuellen Update geschlossen. Oder ist da schon wieder was anderes?
 
OP
D

derdavdn

Newbie
hi,
danke mal für die antworten, nur als noch nie mit debian-konfrontierter tu ich mir einfach schwer, es fehlt wohl das verständnis für's system (wie es halt so ist, als windows-user ... :():

ich habe nun eine datei erstellt, die sich crontab.david nennt. darin habe ich nun cronjobs eingetragen, unter anderem:

*/1 * * * * www/dbpat/cron/cron_mail.php

d.h. ich möchte minütlich das skript cron_mail.php ausführen. wo muss ich die datei crontab.david speichern, damit das werkl so läuft, wie ich mir das vorstelle?

ich hoffe, ich belästige euch nicht allzu sehr mit dem anfänger-quatsch!
danke!
david.
 

nbkr

Guru
Nix datei erstellen. Einfach nur

Code:
crontab -e

eingeben. Dann startet ein Editor mit dem Du den Cronjob eingeben kannst. Dann den Cronjob so eingeben wie Du das auch in der Datei gemacht hast. Beim Pfad den Du angeben hast fehlt vermutlich ein / ganz am Anfang.

In der PHP Datei muss dann übrigens ein

Code:
#! /pfad/zum/phpbinaray/php

drinstehen damit das klappt. Darüber hinaus muss das PHP Script auch als Ausführbar gesetzt sein. Falls nicht schon geschehen, das macht man so:

Code:
chmod 0700 /pfad/zu/deinem/Script.php

Eingabe speichern (einfach speichern, keinen anderen Ort angeben wo die Datei gespeichert werden soll (also kein "Speichern unter ..."), Editor verlassen. Fertig. crontab -e kümmert sich um alles. Es kopiert die Datei an den passenden Ort, etc.
 
OP
D

derdavdn

Newbie
nbkr schrieb:
Nix datei erstellen. Einfach nur

Code:
crontab -e

eingeben. Dann startet ein Editor mit dem Du den Cronjob eingeben kannst.

Wenn ich das mache, dann startet etwas, das sich nano nennt. dort trage ich nun meinen cronjob ein, wenn ich speichere fragt mich das programm, ob ich unter den vorgeschlagenen namen /tmp/crontab.XXXXvqkAa7 speichern möchte.

nbkr schrieb:
In der PHP Datei muss dann übrigens ein

Code:

#! /pfad/zum/phpbinaray/php

drinstehen damit das klappt.

Wie finde ich den Pfad heraus? Der 'Trick' mit dem which php funkt nicht.

gruss
david.
 

nbkr

Guru
Nano ist ein Editor. Wenn er dich fragt ob Du unter dem Namen speichern willst, einfach bestätigen.

Mit
Code:
find / -name "php" 2>/dev/null

sollte sich das PHP Binary finden lassen. Falls es sich nicht findet ist PHP nicht als CGI/CLI Version installiert. Entweder du installierst das nach, oder Du rufst über den Cronjob den lynx Browser (das ist ein Textbrowser) auf, der dann wiederum das PHP Script über den Webserver abruft.

Der Befehl für Lynx lautet in etwa.

Code:
/pfad/zu/lynx --dump &>/dev/null

Falls lynx nicht installiert ist mit YaST nachinstallieren. Ein "which lynx" sollte funktionieren.
 

nbkr

Guru
Na statt dem direkten Aufruf des PHP Scripts einfach den Aufruf von Lynx in die Crontab. So ungefähr sollte es passen:

Code:
/pfad/zu/lynx http://www.domain.de/cron_mail.php --dump &>/dev/null
 
OP
D

derdavdn

Newbie
nbkr schrieb:
Na statt dem direkten Aufruf des PHP Scripts einfach den Aufruf von Lynx in die Crontab. So ungefähr sollte es passen:

Code:
/pfad/zu/lynx http://www.domain.de/cron_mail.php --dump &>/dev/null

So, spät aber doch -> der cron tut gar nix :evil:
wenn ich den befehl direkt eingebe, kommt keine fehlermeldung, der prompt erscheint auch wieder sofort, aber die cron_mail.php wird nicht ausgeführt (wenn ich die datei per browser anspreche funktionierts aber, also an der php liegt's nicht) :?:
 

nbkr

Guru
Das nix kommt ist normal. Die Ausgabe wird ja nach /dev/null umgeleitet. Starte mal lynx mit --help und schau die Syntax vom lynx nach, evtl. hab ich mich bei dem Aufruf vertan.
 
Oben