PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : sntp per cron nicht bekannt.



timmbo
16.12.10, 08:59
Hallo,

bekomme per Mail diese Meldung, obwohl die lokale Ausführung des scripts geht.

/etc/cron.myself/time: line 11: sntp: command not found
/etc/cron.myself/time: line 12: sntp: command not found
/etc/cron.myself/time: line 12: hwclock: command not found

so schaut mein cron.d/time aus


45 00 */3 * * root /etc/cron.myself/time


und so schaut das time files aus


#!/bin/sh


###################
#Set Time from Timeserver #
###################


sntp ptbtime1.ptb.de
sntp -r ptbtime1.ptb.de; hwclock --systohc


Das time file in cron.myself ist root.root und ausführbar.

Thx
Timm

marce
16.12.10, 09:09
absolute Pfade verwenden oder PATH setzen.

timmbo
16.12.10, 09:22
Hi marce,

du meinst ins time File oben "PATH = /usr/bin /usr/sbin"


Grüße
Timm

pibi
17.12.10, 08:21
du meinst ins time File oben "PATH = /usr/bin /usr/sbin"Besser ist es, den bestehenden Pfad zu erweiteren als komplett zu ersetzen:
PATH=$PATH:/usr/bin:/usr/sbin
Gruss Pit.

timmbo
17.12.10, 22:57
Hallo,

äh wird denn mit meinem Beispiel der PATH für das ganze system geändert?
Wenn ich auf der Console $PATH eingebe erscheint dies hier:

lsrv03:~/inst-sys # $PATH
-bash: /sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games: No such file or directory

Ich dachte nämlich das bei meinem Script, da kein PATH drinstnd, auch keiner geht und ich den für dieses Script einfach hinzufüge, das aber nicht das gesamte im System ändert.

Grüße
Timm

marce
17.12.10, 23:38
unter Cron sind die Umgebungsvariablen anders - nicht leer, nur anders. Du erweiterst also etwas, was vorhanden ist. Für dieses Script, nicht für das System.

Mehr dazu - gibt's in jedem Bash-Tuturial in Bereich "Sichtbarkeit von Variablen".

timmbo
19.12.10, 08:06
Hi,

jetzt kommt diese Mail.


/etc/cron.myself/time: line 3: PATH: command not found
/etc/cron.myself/time: line 12: sntp: command not found
/etc/cron.myself/time: line 13: sntp: command not found
/etc/cron.myself/time: line 13: hwclock: command not found


Mir kommt vor das da etwas anderes nicht stimmt, wie wenn er unter cron garnichts kennt. Gibt es denn eine conf Datei wo dies für cron definiert ist?

Thx
Timm

Stormbringer
19.12.10, 08:44
Und wenn Du bspw.


/usr/bin/sntp ptbtime1.ptb.de
/usr/bin/sntp -r ptbtime1.ptb.de; /usr/bin/hwclock --systohc

schreibst?
Wobei Du /usr/bin durch die korrekte Pfadangabe ersetzen mußt, die du per
"which sntp" und "which hwclock" ermitteln kannst.

drcux
19.12.10, 09:34
[CODE]/etc/cron.myself/time: line 3: PATH: command not found


Siehe dir nochmal pibis Beispiel an...

timmbo
19.12.10, 09:39
Hi,

das mit dem absoluten Pfad ist mir schon klar, aber ich möchte ja rausfinden/verstehen warum das so nicht klappt. Auf meinem anderem Server geht es ja.

Habe mal die Zeile mit PATH=$PATH geändert, mal sehn was das bewirkt.

Update: Mit der Erweiterung ging es, ich versteh zwar nicht warum, da die Dateien ja in den Pfaden waren.

Grüße
Timm

pibi
20.12.10, 07:54
Es wurde zwar alles schon gesagt, aber nochmals als Zusammenfassung:

Update: Mit der Erweiterung ging es, ich versteh zwar nicht warum, da die Dateien ja in den Pfaden waren.1. Wenn Du ein Script ueber cron starten laesst, besitzt es ein anderes Environment als wenn Du es direkt als User startest. Dazu gehoert auch der Suchpfad fuer ausfuehrbare Files.

2. die Files waren eben nicht im Suchpfad von cron, sonst haette auf Anhieb ja alles geklappt und Du haettest diese Anfrage nicht schreiben muessen

3. Gewoehne Dir an, in Scripten, die via cron gestartet werden sollen, generell den volle Pfad anzugeben. Da bist Du auf der sicheren Seite.

4. Wenn Du den Suchpfad aendern willst, dann erweitere ihn und ersetze ihn nicht komplett.

5. Es gibt sehr viele gute Beispiele und Tutorials im Internet.

Gruss Pit.

drcux
20.12.10, 08:12
Update: Mit der Erweiterung ging es, ich versteh zwar nicht warum, da die Dateien ja in den Pfaden waren.


Es lag bei deinem Eintrag an den Zwischenräumen vor und hinter dem "=", außerdem werden die Pfade mit einem ":" getrennt.


du meinst ins time File oben "PATH = /usr/bin /usr/sbin"

Richtig wäre also:


PATH="/usr/bin:/usr/sbin"