Crontab mit php bearbeiten

I

icepuma

Grünschnabel
Hey Unixboarder,

ich möchte ein kleines Webprojekt für mich aufziehen, mit dem ich mit Hilfe von PHP Cronjobs erstellen, bearbeiten, löschen kann. Nun habe ich einen Lösungsansatz, indem ich mit PHP eine Datei bearbeite und sie danach mit:

crontab dateiname_der_mit_php_verändet_wurde

einlese.

Nun wollte ich fragen, ob jemand eine Idee hat, in dem ich den Crontab direkt per Shell bearbeiten kann. Sozusagen von PHP aus gesteuert. Eine Lösung habe ich scho gefunden:

php -q skript_welches_croneintraege_erzeugt.php | crontab ``-''

So funktioniert es auch. Bloß kann ich da nur hinzufügen aber weder noch löschen (ohne den ganzen Crontab zu löschen über: crontab -r) noch den Crontab bearbeiten. Wollt hiermit fragen, ob jemand scho mal so eine PHP Admin geschrieben hat oder ob mir jemand weiterhelfen kann.

mfg icepuma
 
Hallo
Ehrlich gesagt ist mir deine Vorgehensweise etwas schleierhaft.
Warum das dicke php benutzen, um eine simple crontab zu editieren?

Es wird laut Manpage zu crontab nicht empfolhen die Datei direkt zu editieren.
Also wenn du das schon per PHP machen willst, lies die ganze Tabelle ein und editiere sie entsprechend im PHP-Code (Suchen ersetzen hinzufügen) und setze diese dann mit einem System-Befehl wieder ein.
Für solche Geschichten ist allerdings sed, Perl oder Awk viel geeigneter.

Gruß Wolfgang
 
Vielen Dank. Da ich noch völlig neu auf dem Gebiet shell bin, wollte ich einmal fragen wie es dann mit sed, awk oder perl möglich den crontab so zu bearbeiten, dass ich cronjobs hinzufügen, löschen und bearbeiten kann. Wäre über ein kleines Codebeispiel erfreut.

mfg stefan
 
man sed
man awk

Am besten nutzt du die Gelegenheit um gleich einmal die Mächtigkeit der Tools zu erfassen ;)
 
crontab mit php perl oder perl bearbeiten

Hallo,

die cronjobs können mit php oder perl ganz easy erstellt oder gelöscht werden.

  1. crontab mit "crontab -l" auslesen
  2. eigene DATEI.cronjob anlegen und den vorab eingelesenen Inhalt schreiben
  3. neuen cronjob dazu schreiben
  4. und schließlich crontab neu anlegen: system("crontab DATEI.cronjob &>/tmp/cronfobs.log");

Möchtest Du diverse Cronjobs wieder löschen, einfach immer die DATEI.cronjob bearbeiten und mit crontab DATEI.cronjob neu einlesen!

bye
 
machs doch ganz anders

leg einfach scripte in /etc/cron.d/ ab! Auf die kannst du immer sauber zugreifen und hast das andere problem nicht. Oder du nutzt die /etc/crontab

Frank
 
Das ist übel: per PHP in die /etc/crontab oder direkt ins /etc/cron.d/ schreiben?
In der Regel werden PHP-Scripts vom Webserver interpretiert, und der hat bei

-rw-r--r-- 1 root root 335 Jan 28 22:20 crontab

keine Chance ;-) DAS SOLLTE AUCH SO BLEIBEN.
 
@mathiko
das weiss ich auch. aber davon red ich hier nicht ;)

Mfg Frank
 
Zurück
Oben