Aoshi Geschrieben 4. Oktober 2010 Geschrieben 4. Oktober 2010 (bearbeitet) Hallo nochmals, habe versucht, ein PHP-Skript per Cronjob auszuführen. Leider erhalte ich eine Fehlermail, wenn der Chronjob durchgelaufen ist und ich versteh den einfach net. Vllt wisst ihr wo der Fehler ist: crontab -e PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11 SHELL=/bin/bash MAILTO=root HOME=/ # m h dom mon dow user command */15 * * * * root /usr/bin/php5 cronjobs/phpDatei.php PHP-Datei: #!/usr/bin/php -q <?php /** * Aktuallesiert den php-documentor * * @package cronjobs * @version 1.0 * @category Cronjob */ system('phpdoc -d /webFolder/ -ti Medititel -o HTML:frames:DOM/earthli -t /PhpDocumentor/ -pp on'); ?>[/PHP] Follgende Fehlermeldung erhalte ich: /var/mail/root: Zeile 1: From: Kommando nicht gefunden. /var/mail/root: Zeile 2: Syntaxfehler beim unerwarteten Wort `newline' /var/mail/root: Zeile 2: `Return-Path: <root@devel>' Weiß jemand zufällig, wie ich den Fehler beheben kann? lg Aoshi Bearbeitet 4. Oktober 2010 von Aoshi Zitieren
schepp Geschrieben 5. Oktober 2010 Geschrieben 5. Oktober 2010 Hi, ich würd erstmal probieren die phpdatei, die du ausführen möchtest mit absolutem Pfad anzugeben, das schließt schonmal eine beliebte Fehlerquelle aus. Gruß Zitieren
flashpixx Geschrieben 5. Oktober 2010 Geschrieben 5. Oktober 2010 Evtl reicht es das Command in Anführungszeichen zu setzen, da Leerzeichen im Commando vorhanden sind, außerdem musst du kein /usr/bin/php angeben wenn Du innerhalb des Scriptes den passenden Interpreter hast, zusätzlich muss das Script das passende x-Recht besitzen Zitieren
Aoshi Geschrieben 5. Oktober 2010 Autor Geschrieben 5. Oktober 2010 @schepp: PHP-File ist im Absoluten Pfad angegeben. Ist nur für hier was verändert worden. @flashpixx: Habe das "/usr/bin/php" rausgelassen aber hatte leider nicht geholfen. Leider habe ich ka was du mit X-Rechte meinst...das Script wird mit root-rechte ausgeführt...also sollte es alles dürfen. Ich sollte anmerken, das das Kommando bei crontab funktioniert, hatte es selbst so einfach getestet gehabt und der systembefehel von beim PHP-File auch funktioniert. dennoch danke für die tipps mfg Aoshi Zitieren
Kwaiken Geschrieben 5. Oktober 2010 Geschrieben 5. Oktober 2010 flashpixx meint das +x Flag (Execute) der Datei. Ist egal, sofern man zunächst den Interpreter ausführt, wie Du es machst ohne die Datei selbst mit ./ auszuführen. Nimm bitte mal das "root" raus (es ist eh das crontab von root, wie ich meine) und schaue im /var/log/cron nach, was er meldet wenn er das nicht ausführen kann. Zitieren
lupo49 Geschrieben 5. Oktober 2010 Geschrieben 5. Oktober 2010 Ich sollte anmerken, das das Kommando bei crontab funktioniert, hatte es selbst so einfach getestet gehabt und der systembefehel von beim PHP-File auch funktioniert. Das heißt der Cronjob läuft ordentlich durch nur das trotzdem eine Fehlermail erzeugt wird? Erzeugt der PHP-Befehl eine STDOUT-Ausgabe auf der Konsole? Zitieren
Aoshi Geschrieben 5. Oktober 2010 Autor Geschrieben 5. Oktober 2010 1. es wurde keine Logdatei erzeugt (find ich jedenfalls nicht) 2. Jeder User kann Cronjobs anlegen und man kann auch definieren, über welchem user der cronjob laufen soll (später soll er über nen eigenen user laufen können) 3. Ich erhalte die ganze zeit nur diese Mail, die den besagten Fehler meldet 4. habe den jetzt eine echo anweisung gegeben, das wenn der cronjob durchgelaufen ist, er diese ausgeben soll 5. NEIN, die Aufgabe (in diesem fall das php file aufrufen) macht er nicht. Habe nur die Befehle (Komando des Cronjobs und die systemanweisung) manuel in die console getippt und so ausgeführt und diese funktionieren alle. Darum habe ich in diesem fall ka wo der fehler liegt lg Aoshi Zitieren
lupo49 Geschrieben 5. Oktober 2010 Geschrieben 5. Oktober 2010 1. es wurde keine Logdatei erzeugt (find ich jedenfalls nicht) crond protokolliert standardmäßig in /var/log/cron.log (oder auch /var/log/syslog). Was ist /var/mail/root/? Was steht dort drin? Ist das eine Mailbox? Zitieren
Aoshi Geschrieben 6. Oktober 2010 Autor Geschrieben 6. Oktober 2010 in /var/mail/root ist die mailbox (ka wie ich alle aufrufen kann...kann nur die letzte immer aufrufen) und da steht genau /var/mail/root: Zeile 1: From: Kommando nicht gefunden. /var/mail/root: Zeile 2: Syntaxfehler beim unerwarteten Wort `newline' /var/mail/root: Zeile 2: `Return-Path: <root@devel>' drinne... Naja, im syslog steht da was drinne, nur eher über die mailnachrrichten: Oct 6 07:44:02 devel sm-mta[1479]: o965i2ZV001477: to=<root@devel.GF-Netzwerk>, ctladdr=<root@devel.GF-Netzwerk> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30895, dsn=2.0.0, stat=Sent Oct 6 07:44:02 devel sm-mta[1480]: o965i2x4001478: to=<cron@devel.GF-Netzwerk>, ctladdr=<cron@devel.GF-Netzwerk> (1002/1002), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30876, dsn=2.0.0, stat=Sent Oct 6 07:45:01 devel CRON[1488]: (root) CMD (root^I'usr/bin/php5 /home/web/alpha/_cronjobs/phpDoc.php' ) Oct 6 07:45:01 devel CRON[1489]: (cron) CMD (cron^I/usr/bin/php5 /home/web/alpha/_cronjobs/phpDoc.php) Oct 6 07:45:01 devel cron[1491]: (CRON) DEATH (can't open or create /var/run/crond.pid: Permission denied) Oct 6 07:45:01 devel sendmail[1492]: o965j1LQ001492: from=cron, size=397, class=0, nrcpts=1, msgid=<201010060545.o965j1LQ001492@devel.GF-Netzwerk>, relay=cron@localhost Oct 6 07:45:01 devel sendmail[1490]: o965j1uX001490: from=root, size=401, class=0, nrcpts=1, msgid=<201010060545.o965j1uX001490@devel.GF-Netzwerk>, relay=root@localhost Oct 6 07:45:01 devel sm-mta[1493]: o965j1J6001493: from=<cron@devel.GF-Netzwerk>, size=667, class=0, nrcpts=1, msgid=<201010060545.o965j1LQ001492@devel.GF-Netzwerk>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] Oct 6 07:45:01 devel sm-mta[1494]: o965j1xf001494: from=<root@devel.GF-Netzwerk>, size=671, class=0, nrcpts=1, msgid=<201010060545.o965j1uX001490@devel.GF-Netzwerk>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] Oct 6 07:45:01 devel sendmail[1492]: o965j1LQ001492: to=cron, ctladdr=cron (1002/1002), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30397, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o965j1J6001493 Message accepted for delivery) Oct 6 07:45:01 devel sendmail[1490]: o965j1uX001490: to=root, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30401, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o965j1xf001494 Message accepted for delivery) Oct 6 07:45:01 devel sm-mta[1495]: o965j1J6001493: to=<cron@devel.GF-Netzwerk>, ctladdr=<cron@devel.GF-Netzwerk> (1002/1002), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30876, dsn=2.0.0, stat=Sent Oct 6 07:45:01 devel sm-mta[1496]: o965j1xf001494: to=<root@devel.GF-Netzwerk>, ctladdr=<root@devel.GF-Netzwerk> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30895, dsn=2.0.0, stat=Sent vllt findet ihr ja was drinne^^ lg Aoshi Zitieren
lupo49 Geschrieben 6. Oktober 2010 Geschrieben 6. Oktober 2010 Oct 6 07:45:01 devel cron[1491]: (CRON) DEATH (can't open or create /var/run/crond.pid: Permission denied) Überprüfe mal, warum der Prozess die Datei nicht erstellen kann. Zitieren
Aoshi Geschrieben 6. Oktober 2010 Autor Geschrieben 6. Oktober 2010 (bearbeitet) Hier die Zugriffsrechte davon: d-rw-r--r-- 1 root root 4 2010-09-02 16:15 crond.pid Habe schon follgendes Probiert: - Ohne PATH, SHELL, MAILTO, HOME - Anderen User verwendet - Befehl in Hochkommas gesetzt - Leere PHP-Datei ausgeben lassen - Leerzeichen & Komma hinter dem Befehl - Neue leere Zeile - Datei-Inhaber von /var/run/crond.pid geändert (eigener User und dann wieder auf root) - Datei mal gelöscht (erstellt danach diese neu mit einer zahl drinne die anscheinlich steigt) Bekomme immernoch die selbe mail: /var/mail/root: Zeile 1: From: Kommando nicht gefunden. /var/mail/root: Zeile 2: Syntaxfehler beim unerwarteten Wort `newline' /var/mail/root: Zeile 2: `Return-Path: <root@devel>' Wie "Komando nicht gefunden"? Wo steht das Wort "newline"? usw. lg Aoshi Bearbeitet 6. Oktober 2010 von Aoshi Zitieren
carstenj Geschrieben 6. Oktober 2010 Geschrieben 6. Oktober 2010 Hi, hast du irgendwas wie App-Armor oder SELinux laufen? Zitieren
lupo49 Geschrieben 6. Oktober 2010 Geschrieben 6. Oktober 2010 Läuft der crond schon im Hintergrund? ps aux | grep -i cron Zitieren
Aoshi Geschrieben 6. Oktober 2010 Autor Geschrieben 6. Oktober 2010 @Lupo: Hier die antwort: root@devel:/var/log# ps aux | grep -i cron root 771 0.0 0.0 2376 908 ? Ss Sep02 0:05 cron root 14703 0.0 0.0 2376 892 ? Ss Oct06 0:00 cron usr/bin/php5 /home/cronjobs/phpDoc.php, root 23703 0.0 0.0 3332 856 pts/0 S+ 00:41 0:00 grep --color=auto -i cron Würde also erstmal deine Antwort mit ja beantworten^^ @casternj: ne, nicht das ich wüsste...bei den Prozessen ist davon jedenfalls nichts aufgelistet. lg Aoshi Zitieren
Kwaiken Geschrieben 7. Oktober 2010 Geschrieben 7. Oktober 2010 Wessen cronjob ist das überhaupt? Der eines Users oder der vom root? Wenn es der eines Users ist, kannst Du natürlich nicht auf Dateien/Programme mit root-Besitz zugreifen. Dann würde es sich empfehlen in der sudoers das Skript für den User mit nopasswd zu hinterlegen damit der Benutzer mit sudo ohne Passwortabfrage darauf zugreifen kann. Dann setzt Du im cronjob einfach sudo vor's Kommando. Quick and Dirty wäre es, wenn der Cronjob einfach für root eingetragen wird. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.