tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
1474
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von evoleena
    evoleena evoleena ist offline Mitglied Brokat
    Registriert seit
    Feb 2004
    Beiträge
    315
    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
     

  2. #2
    Avatar von Enumerator
    Enumerator Enumerator ist offline Mitglied Kamel
    Registriert seit
    Jan 2007
    Ort
    Schreibtisch
    Beiträge
    525
    Blog-Einträge
    2
    'n Abend!

    Um herauszufinden wo das PHP-Binary liegt, kannst Du den Befehl which benutzen:
    Code :
    1
    2
    3
    4
    5
    
    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 :
    1
    2
    3
    4
    5
    6
    
    /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
     
    Zitat Zitat von Aba Assa
    "Zitate sind so etwas wie Outsourcing des Geistes."
    just-lyrics.org :: my-lyrics.org

  3. #3
    Darian Darian ist offline Mitglied Platin
    Registriert seit
    Feb 2003
    Ort
    Guatemala
    Beiträge
    512
    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 :
    1
    2
    3
    
    #!/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
     

  4. #4
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    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:
    Code bash:
    1
    2
    3
    4
    5
    6
    
    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
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  5. #5
    Avatar von evoleena
    evoleena evoleena ist offline Mitglied Brokat
    Registriert seit
    Feb 2004
    Beiträge
    315
    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
     

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    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...
    Geändert von deepthroat (23.11.09 um 18:59 Uhr)
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    Darian Darian ist offline Mitglied Platin
    Registriert seit
    Feb 2003
    Ort
    Guatemala
    Beiträge
    512
    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
     

  8. #8
    Avatar von evoleena
    evoleena evoleena ist offline Mitglied Brokat
    Registriert seit
    Feb 2004
    Beiträge
    315
    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
     

  9. #9
    Avatar von evoleena
    evoleena evoleena ist offline Mitglied Brokat
    Registriert seit
    Feb 2004
    Beiträge
    315
    Danke klappt alles wunderbar!
     

Ähnliche Themen

  1. Automatisches Script ala Cronjob
    Von querytail im Forum PHP
    Antworten: 10
    Letzter Beitrag: 19.01.11, 12:54
  2. Mit Cronjob PHP-Script aufrufen schlägt fehl
    Von Sasser im Forum Hosting & Webserver
    Antworten: 5
    Letzter Beitrag: 12.07.10, 10:07
  3. php-Script aufrufen wie Cronjob
    Von Sturmrider im Forum PHP
    Antworten: 3
    Letzter Beitrag: 11.01.09, 11:17
  4. CronJob soll Script mehrmals ausführen
    Von seltsammithut im Forum PHP
    Antworten: 4
    Letzter Beitrag: 10.11.08, 11:18
  5. Probleme mit Script / cronjob
    Von brainyy im Forum Linux & Unix
    Antworten: 0
    Letzter Beitrag: 13.12.05, 13:52