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

Cronjobs und PHP

Hallo Community!

Ich habe ein Problem.
Ich suche nach einer Möglichkeit, mit einem PHP-Script Cronjobs zu bearbeiten.
Das heißt, ich möchte per PHP Cronjobs hinzufügen und löschen können.
Wer kann mir weiterhelfen?

Achso:
Mein System ist SuSE 9.3.
Zur Verfügung stehen mir PHP, SSH-Root-Zugriff, und weitere Software ließe sich nach installieren.


Danke schonmal für eure Hilfe!
 

regexer

Advanced Hacker
WebWatcher schrieb:
Ich suche nach einer Möglichkeit, mit einem PHP-Script Cronjobs zu bearbeiten.
Leider kann ich dir keine fertige Antwort liefern. Ich würde mich aber an deiner Stelle die entsprechenden man-pages lesen. Es sieht für mich so aus, als müsstest du nur die entsprechenden Textfiles in /var/spool/cron/tabs ändern. Aber wie gesagt: einfach nochmal durchlesen und ausprobieren.

Code:
man cron
man crontab
man 5 crontab
 

nbkr

Guru
Du kannst Die Crontabs aus PHP nur direkt ändern (also wie bereits gesagt über die entsprechenden Dateien /var/spool/cron/crontabs). Die haben die gleiche Syntax wie wenn Du contab -e aufrufst. Da das aber einen Editor startet, welchen man per PHP.system() logischerweise nicht bedienen kann geht es nur direkt über die Datei. Problem: Die Dateien sollten eigentlich nicht direkt bearbeitet werden und sind auch nur für root bzw. Mitglieder der entsprechenden Crontabgruppe zugänglich. D.h. Du brauchst einen speziellen Shelluser der das PHP Programm ausführt. D.h. Du musst die Daten was in die Crontab soll wieder irgendwo zwischenspeichern.
 

TeXpert

Guru
crontab kann auch von stdin lesen, d.h. ein
Code:
crontab -l >>pipe_irgendwie_in_browser_textedit
dann manuelles rumfummeln und ein
Code:
crontab - << irgendwie aus dem browsertextedit
sollte auch helfen, hier kann dann noch zusätzlcih mit -u ein user geliefert werden... aber das beantwortet auch alles die manpage
 
OP
W

WebWatcher

Newbie
Ich hatte auch schon an eine Lösung gedacht, per su-Command [copy] die Crontab auf meinen WebServer zu schieben, mit nem normalen PHP-Edit zu bearbeiten und danach mit nem su-Command [copy] zurück senden.
Anschließend meinetwegen auch noch ein SuSEconfig.

Das Problem, was hierbei aufgetreten ist, ist dass es nur manchmal funktioniert.
In manchen Fällen akzeptiert er die Änderung, aber leider passiert es auch genauso oft, dass er dann die komplette Crontab ignoriert, bis ich sie über den Midnight-Commander bearbeite und speichere.
an der Stelle /var/spool/cron/ hab ich keine Crontab gefunden.

Meine Test haben sich bis jetzt immer auf die /etc/crontab-Datei bezogen.

Ich hoffe, ihr könnt mir das Phänomen irgendwie erklären, was ich da falsch mache, dass es MANCHMAL nicht geht.
 
OP
W

WebWatcher

Newbie
Klaro.

Wenn man ein Fehler im PHP-Script hat, und ne PHP-Datei ohne Browser (lynx) etc. ausführen will, dann muss man sich als User sicher nicht wundern, dass nichts geht.
Ich hab PHP modular und nicht als CGI laufen.

Aber ansonsten geht die Lösung, die ich oben beschrieben hab.
Vielleicht könnte man ja sogar nen Cronjob schreiben, der den cp - Befehl au9tomatisch alle 10 Minuten ausführt.
(Ein sich selbst aktualisierendes Script... *lol*)

Achso: Nach der Aktualisierung der crontab ist KEIN SuSEconfig notwendig.
 
Oben