cronjob für PHP Script

evoleena

Erfahrenes Mitglied
Hallo Leute,

ich müsste einen Cronjob für ein php Script von mir einstellen.
Nun hab ich gelesen, das man über den Befehl crontab -l sich die vorhandenen Cronjobs anschauen kann.
Aber leider kommt bei mir die Meldung, das kein Crontab für root vorhanden ist.
was hat das zu sagen. Was muss ich tun um mir einen cronjob einzurichten, dass das dann auch funktioniert.
und eine weiter frage ist, um das php script als job einzurichten muss ich angeben in welchem Pfad php liegt. Hab schon alles durchgeschaut, aber ich weiß nicht so recht was da angegeben werden muss.
gefunden habe ich nur die php.ini und php.d darin finde ich nur snmp.ini, gd.ini und eine mysql.ini.

gruß
evoleena
 
'n Abend!

Um herauszufinden wo das PHP-Binary liegt, kannst Du den Befehl which benutzen:
Code:
lenny:~$ which php
lenny:~$ which php5
lenny:~$ which perl
/usr/bin/perl
lenny:~$
Wie man sieht ist auf meinem Debian zwar kein PHP installiert, aber Perl liegt eindeutig in /usr/bin - da wo sich wahrscheinlich PHP bei Dir auch befindet.
Im Übrigen brauchst Du (normalerweise) gar nicht zu wissen wo PHP liegt, einfach nur php (oder php5) sollte eigentlich ausreichen.

Informationen wie's genau geht gibt's via manpage, hier in der Tutorials Sektion oder, noch übersichtlicher, auf tweakpc.de...
Im Übrigen dürfte es auch auf deinem System die Ordner /etc/cron* sowie die Datei /etc/crontab geben:
Code:
/etc/crontab       # da würd' ich vorerst die finger von lassen...
/etc/cron.d        # da auch...
/etc/cron.daily    # hm, da kann man auch ein skript ablegen...
/etc/cron.hourly   # da auch...
/etc/cron.monthly  # und da? ja, klar
/etc/cron.weekly   # hier? nein. doch.

Gruß
Enum
 
Hallo,

du erstellst einfach in /etc/cron.daily/testskript.sh (oder auch wie oben schon erklärt in einem anderen cron.* Ordner)

Das testskript.sh muss aber die rechte für ausführen haben (755 zum Beispiel)

In das File kommt folgendes:
Code:
#!/bin/bash

php /pfad/zum/php

Und schon müsste es funktionieren.

vorher noch das Skript mit ./testskript.sh testen, und geniessen.

lg und viel Glück
Darian
 
Hi,

alternativ könntest du auch einen Symlink auf dein PHP-Skript in einen der vielen /etc/cron.* Ordner legen. Somit müsstest du dein Script nicht über ein Shellscript aufrufen, sondern könntest das "schöner" direkt über die SheBang lösen.
Das einzige, was du umändern musst, ist dass du bei deinem Script die SheBang an den Anfang packst (Keine Angst, diese wird falls agegeben nicht per Browser ausgegeben oder anderweitig beachtet).

Beispiel:
Bash:
echo '#!/usr/bin/php5
<?php
  mkdir("/tmp/" . rand());
?>' > /tmp/test.php   # Testscript erstellen
chmod 0755 /tmp/test.php  # Ausführrecht geben
ln -s /tmp/test.php /etc/cron.daily/  # In Crontab einschreiben

Dieses Testscript legt jeden Tag ein Verzeichnis mit einem zufälligen Namen in deinem /tmp/ Ordner an.

Deinen Pfad in der SheBang musst aber vielleicht noch anpassen, am Besten da das von "Enumerator" angesprochene "which" verwenden.

Gruß
BK
 
Hallo

ich habe mittlerweile einen Cronjob angelegt, der funktioniert auch, nur leider passt mir die Uhrzeit nicht so ganz. Es wird 4 Uhr nachts ausgeführt. Nun meine Frage kann ich das beeinflussen wann das ausgeführt werden soll?

Den Cronjob habe ich wie folgt angelegt.
ich habe eine ausführbare Datei im Ordner /etc/cron.daily angelegt, in der diese zeilen stehen
#! /bin/sh
php -q -f /var/www/html/meinprojekt/meinePHPdatei.php

ich hoffe es gibt eine möglichkeit die Zeit zu beeinflussen

Gruß
Evoleena
 
Hi.

Wenn du dein Skript zu bestimmten Zeiten ausführen willst, legst du kein Skript in cron.daily an.

Du erstellst als normaler Benutzer dein Skript unterhalb deines Homeverzeichnisses. Wenn es nicht unbedingt als root laufen muss, dann lass es nicht als root laufen.

Dann rufst du "crontab -e" auf. Da wird ein Editor gestartet und du mußt dann eine Zeile eingeben.

Siehe z.B. http://www.adminschoice.com/docs/crontab.htm

Gruß

PS: Wenn du noch keine crontab erstellt hast, dann ist es ganz normal, das "crontab -l" dann sagt, dass keine crontab vorhanden ist...
 
Zuletzt bearbeitet:
Hallo,

wenn du eine spezielle Zeit einstellen willst, musst du deinen cronjob in /etc/crontab eintragen.

Musst da ein bisschen googeln, wie das genau eingetragen gehört weiß ich jetzt auch nicht auswendig, habe immer versucht das zu vermeiden :)

lg Darian
 
Okay hab es in die crontab geschrieben. Werde morgen Abend sehen obs geklappt hat.
Jetzt steht auch ein Eintrag drin, wenn ich crontab -l mache :)

Gruß
Evoleena
 

Neue Beiträge

Zurück