crontab läuft nicht

Post Reply
Message
Author
Careen

crontab läuft nicht

#1 Post by Careen »

Hi!
Habe ein Problem mit crontab.
Ich habe als normaler User einen Cronjob angelegt.
Er sollte jeden morgen um 11.20 laufen.

crontab -e
dann
20 11 * * * /usr/local/myprogram/myprogam.sh

wenn ich unter root unter Kommanozeile aufrufe, klappt alles prima.
Es liegt nicht am Script.
Der automatische Cronjob klappt jedoch nicht.

Die Rechte für myprogram.sh habe ich mit chmod 755 gändert.
Ich bin neu in der Linuxwelt. Habe ich vielleicht etwas vergessen?
Googeln hat auch nicht weitergeholfen...

Danke im voraus!

chlor

#2 Post by chlor »

hi,

bei mir, sieht z.b. die zeile, für meinen brutalen wecker, so wie die untere aus.
> 20 11 * * * /usr/local/myprogram/myprogam.sh
10 8 * * * user /usr/bin/beep -f 3000 -r 150
vielleicht hast du einfach nur deinen "user" vergessen?

gute nacht

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#3 Post by jochen »

@chlor: Unwahrscheinlich. Die Notation mit der Userkennung zwischen den 5 Zeitangaben und dem Kommando wird nur in der /etc/crontab bzw. unter /etc/cron.d/* verwendet. Wenn man einfach mittels

Code: Select all

crontab -e
eine crontab-Datei erstellt, wird sie unter /var/spool/cron/crontabs unter dem Namen des anlegenden Users gespeichert (distributionsabhängig). Damit ist das User-Feld unnötig; es ist eigentlich auch nur eine Erweiterung, die man bei anderen crond-Implementierungen nicht unbedingt findet.

Wenn man sich als root (oder beliebiger anderer User) am System anmeldet, durchläuft die Shell des Users ja verschiedene Dateien, die dem User eine angenehme Arbeitsumgebung einrichten sollen. Dazu gehört auch, dass die PATH-Variable ergänzt wird, damit alle notwendigen Programme schnell und unkompliziert aufgerufen werden können. Insbesondere wird bei root auch /sbin und /usr/sbin mit in den Suchpfad aufgenommen.

Als Lösung bieten sich zwei Möglichkeiten an:
  • Entweder die Kommandos (wenn es nur wenige sind) mit absoluten Pfadnamen aufrufen (also statt

    Code: Select all

    lsof
    lieber

    Code: Select all

    /usr/sbin/lsof
    schreiben
  • oder aber wenn das Skript länger ist oder noch andere Umgebungsvariablen gesetzt werden müssen, diese im Skript selbst auf die nötigen Werte setzen:

    Code: Select all

    PATH=$PATH:/sbin:/usr/sbin
    lsof
Ich hoffe, das hilft Dir weiter.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Post Reply