cronjob wird nicht ausgeführt

CvH

New Member
Hallo zusammen,

ich quäle mich seit einiger Zeit mit einem Cronjob, den ich einfach nicht zum Laufen kriege. Habe schon alles mögliche probiert. Hier der derzeitige Stand:
  • Habe eine SH-Datei erstellt, die zwei PHP-Scripte nacheinander ausführt (manuell angestoßen funktioniert diese SH-Datei und auch die PHP-Scripte darin funktionieren einzeln)
  • Habe dann diese SH-Datei in die crontab eingetragen (Besonderheit: darf nicht von user root ausgeführt werden, sondern von anderem user)
Hier die SH-Datei (funktioniert wie gesagt, wenn ich sie manuell aufrufe):
Code:
#!/bin/bash
/usr/bin/php /srv/www/htdocs/username/inxmail2noa.php
/usr/bin/php /srv/www/htdocs/username/noa2inxmail.php
Und hier die crontab:
Code:
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
59 *  * * *     root  rm -f /var/spool/cron/lastrun/cron.hourly
14 4  * * *     root  rm -f /var/spool/cron/lastrun/cron.daily
29 4  * * 6     root  rm -f /var/spool/cron/lastrun/cron.weekly
44 4  1 * *     root  rm -f /var/spool/cron/lastrun/cron.monthly
00 3  * * *     root  /root/bin/backup.sh
00 3  * * *     username /srv/www/htdocs/username/noatransfer.sh
Der letzte Eintrag ist der, welcher nicht ausgeführt wird. Alles andere läuft.

Mein letzter Gedanke war, dass die sh-Datei nicht die nötigen Rechte hat. Habe sie dann auf 711 gesetzt, aber im Ergebnis keine Veränderung. Apache habe ich auch schon neu gestartet... zur Sicherheit. Andere Uhrzeiten (jetzt aktuelle, um zu testen) habe ich auch probiert... keine Veränderung...

Hat irgendjemand eine Idee, woran es noch liegen kann?

Danke und Gruß
Catharina
 
Die globale Crontab sollte nicht verändert werden.
Cronjobs, die User (auch root) ausführen sollen trägt man ihnen in ihre eigene User-Crontab ein:
Code:
crontab -e

oder als root:
Code:
crontab -u <user> -e

Die User-Crontab sieht genauso aus wie die globale, allerdings entfällt die Angabe des Usernamen vor der Commandline.

Dann sind da noch die üblichen Punkte, die es zu beachten gilt:
- Script executable?
- Beachtet, dass Cron das Environment nicht lädt?

Update:
Hab gerade gesehen, dass du die Rechte auf 711 gesetzt hast. Um ein Script ausführen zu können, muss man es auch lesen können. (Edit: Ich habe mal angenommen, dass das Script nicht dem User gehört, der es ausführen soll.)
 
Last edited by a moderator:
crontab -e
Wenn ich als der entsprechende User das eingebe, kommt die Meldung, dass es keine crontab für diesen user gibt und dass eine leere angezeigt wird. Dort kann ich aber irgendwie nichts eingeben... Was nun?

Hab gerade gesehen, dass du die Rechte auf 711 gesetzt hast. Um ein Script ausführen zu können, muss man es auch lesen können. (Edit: Ich habe mal angenommen, dass das Script nicht dem User gehört, der es ausführen soll.)
Der Eigentümer ist der gleiche User, der das Script auch ausführen soll. Wenn ich mich per SSH einlogge mit dem besagten User, dann kann ich das Script auch ausführen. Ursprünglich hatte ich als Rechte 700 eingestellt, dann habe ich das geändert... hat aber auch nichts genützt.
 
Dort kann ich aber irgendwie nichts eingeben..
Per default wird die crontab mit vim (oder vi) geöffnet. Wenn du mit vim nicht zurecht kommst, kannst du mit
Code:
export editor=<Editor deiner Wahl>
vorher einen anderen Editor bestimmen und crontab öffnet dann mit diesem.

Wenn du den Cronjob dann an der richtigen Stelle hast und er immer noch nicht geht, dann geht's weiter. ;)
BTW: Wenn du das Script auf der Shell startest, dann bist du im Homeverzeichnis des Users oder hast du vorher den Pfad gewechselt?
 
Last edited by a moderator:
Per default wird die crontab mit vim (oder vi) geöffnet.
Danke für den Hinweis. Ich hatte das schon vermutet, aber die Idee dann nicht weiter verfolgt. Jetzt habe ich mir eine Kurzreferenz ausgedruckt und habe es geschafft die crontab des Users anzulegen.
Der konkrete Eintrag lautet jetzt:
Code:
00 18 * * * /srv/www/htdocs/username/noatransfer.sh
Richtig so? Muss eigentlich der Apache neu gestartet werden, damit er merkt, dass ein neuer Eintrag in der crontab ist?
 
Der Apache sollte damit nichts zu tun haben, da die Scripts auf der Shell laufen. Der Crond nimmt automatisch die neue Crontab.

Was mir gerade komisch ins Auge fällt, ist die Angabe von 00 für 0. Das habe ich so noch nie gesehen.
 
Habe die zweite Null mal entfernt... aber der Cronjob in der Zeile darüber ist ja identisch eingetragen und der läuft... schon seltsam. Mal sehen was jetzt passiert.
 
Ich weiß nicht mehr weiter...

Kann es sein, dass die Probleme daraus resultieren, dass auf dem Server confixx läuft? Ich habe herausgefunden, dass ich unter confixx auch crontabs für die einzelnen Benutzer pflegen kann. Wenn ich mit crontab -e per ssh eine crontab für den Benutzer angelegt habe, wird diese aber unter confixx nicht angezeigt (es gibt dort eine Button "Liste neu einlesen"). Ich habe den cronjob jetzt dort einfach auch noch einmal eingetragen, aber es tut sich trotzdem nichts... Ich weiß echt nicht mehr weiter... hat noch jemand eine Idee?

Danke und Gruß
Catharina
 
Back
Top