Cronjob wird nicht ausgeführt

Status
Für weitere Antworten geschlossen.

feuerwehr

Benutzer
Mitglied seit
17. Jan 2014
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
Hallo,
ich habe da ein Problem mit der cron Funktion einer DS210J

ein cronjob wird einfach nicht ausgeführt.

Hier mal meine Shell

#!/opt/bin/bash

holger= `date`
echo $holger > /usr/local/bin/1.log

diese kleine shell soll nur zum testen sein, da cron mit mir macht was es will.
Ich möchte in diesem Test also das aktuelle Datum in die Datei 1.log schreiben lassen.

Wenn ich 1.sh im Terminal eingebe funktioniert das ohne Problem
aber sobald crontab das übernehmen soll ignoriert crontab es völlig.

mein crontab sieht so aus

*/1 * * * * root /usr/local/bin/1.sh

warum klappt das mit cron nicht

Ich habe den crontab mit cronjobs über die dsm befüllt und auch mal mit nano -w probiert
die Abstände zwischen den * sind mit TAB gemacht, den cron habe ich mit
/usr/syno/etc.defaults/rc.d/S04crond.sh stop gestoppt und mit
/usr/syno/etc.defaults/rc.d/S04crond.sh start gestartet.
 
Zuletzt bearbeitet:

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.825
Punkte für Reaktionen
1.782
Punkte
314
Hi!

Mal so ganz unter uns "Linux-Noob's" :D

Hast du das script ausführbar gemacht mit...
Code:
chmod 755 1.sh

Tommes
 

feuerwehr

Benutzer
Mitglied seit
17. Jan 2014
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
ja es läßt sich auch manuell starten

allerdings mit chmod +x 1.log

besteht da ein Unterschied ?
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.825
Punkte für Reaktionen
1.782
Punkte
314
Äm.. du willst die 1.log ausführbar machen?

+x fügt den aktuellen Rechten Ausführen hinzu, 755 setzt auf einen festen Wert, nämlich rwxr-xr-x

Ach und... ich setze als Shebang immer ein...

#!/bin/sh

... ein. Aber wie gesagt... Linux-Noob

Tommes
 

feuerwehr

Benutzer
Mitglied seit
17. Jan 2014
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
@Tommes
da die Datei sich ja auführen lässt scheint das mit dem chmod +x nicht ganz verkehrt gewesen zu sein.
Sicherheitshalber habe ich auch noch auf 755 gemacht.
Das mit dem Shebang hatte ich schon in beider Varianten durch probiert.

#!/opt/bin/bash und
#!/bin/sh

klappt aber beides nicht mit cron

Mfg
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.825
Punkte für Reaktionen
1.782
Punkte
314
Hm, ich glaub dann solltest du ein wenig warten, bis hier ein Profi vorbei kommt und dir weiterhelfen kann. :eek:

Sorry

Tommes
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.102
Punkte für Reaktionen
3.917
Punkte
488
Nach dem = darf kein Leerzeichen stehen, daher als "holger=`date`" oder besser "holger=$(date)"
 

feuerwehr

Benutzer
Mitglied seit
17. Jan 2014
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
@Benares
Danke das klappt jetzt mit dem cronjob, nach deinem Tipp

Was mich wundert ist das die shell, so wie ich sie geschrieben hatte, sich manuell hat starten lassen aber nicht mit cron

Dann kann ich ja jetzt versuchen mein eigentliches Problem in Angriff zu nehmen, dass starten eines Programms mit auslesen von Daten und diese dann in eine log zu schreiben.

Ich melde mich bestimmt wieder, da es bstimmt nicht funktionieren wird aber Vesuch macht Klug..

Mfg
 

feuerwehr

Benutzer
Mitglied seit
17. Jan 2014
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
Und da bin ich wieder

mit dieser shell möchte ich den Wert den digitemp mir erzeugt in die test.log schreiben
Wenn ich shell mit KITTy ausführe geht es, mit cron natürlich wieder nicht !!!

Hier die shell

#!/opt/bin/bash

test=$(/opt/bin/digitemp_DS2490 -a -o"%C" -q)

echo $test > /usr/local/bin/test.log

kann du mir weiterhelfen

Mfg
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.102
Punkte für Reaktionen
3.917
Punkte
488
Probiers erst mal mit
Code:
#!/bin/sh
/opt/bin/digitemp_DS2490 -a -o"%C" -q >/usr/local/bin/test.log 2>&1
Dann siehst du auch evtl. auftretende Fehlermeldungen. Warum soll's denn unbedingt die bash sein?
 

feuerwehr

Benutzer
Mitglied seit
17. Jan 2014
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
Ich probiere das mal

zur bash wurde mir in einem anderen Thread geraten

Ich übernehne das mal so wie du das meinst.

mfg
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.102
Punkte für Reaktionen
3.917
Punkte
488
Die bash brauchst du nur, wenn du Features verwendest/benötigst, die die normale sh nicht kann. Ansonsten ist das eher kontraproduktiv.
 

feuerwehr

Benutzer
Mitglied seit
17. Jan 2014
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
Hallo Benares

ich habe deine shell mal probiert

Genau das gleiche
Bei manueller ausführung wird mir ein Wert in die test.log geschrieben
Bei cron führt er den cronjob zwar aus ( kann ich in einer crod.log sehen) aber in test.log erscheint nichts auch keine Fehlermeldung

Dieses Verhalten hatte ich bsher bei allen Variationen die ich bei der shell ausprobiert habe.
Ich glaube cron mag den von digitemp ausgegebenen Wert nicht.

Mfg
 

feuerwehr

Benutzer
Mitglied seit
17. Jan 2014
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
Dies ist mal ein Ausschnitt aus der crond.log

Jan 26 16:04:01 crond: USER root pid 19773 cmd /usr/local/bin/test.sh
Jan 26 16:05:01 crond: USER root pid 19843 cmd /usr/local/bin/test.sh
Jan 26 16:06:01 crond: USER root pid 19908 cmd /usr/local/bin/test.sh
Jan 26 16:07:01 crond: USER root pid 19970 cmd /usr/local/bin/test.sh
Jan 26 16:08:01 crond: USER root pid 20034 cmd /usr/local/bin/test.sh
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.102
Punkte für Reaktionen
3.917
Punkte
488
Was ist denn dieses "digitemp_DS2490", ein weiteres Script?
Denk dran, dass cronjobs die /etc/profile und ~/.profile nicht durchlaufen, also ggf. andere Einstellungen für PATH u.a. vorfinden. Wenn etwas davon wichtig ist, muss es mit in das Script hinein.
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.165
Punkte für Reaktionen
414
Punkte
393
Hallo,
digitemp_DS2490 ist ein binary. Wenn man hineinschaut sieht man, daß eine .digitemprc und eine digitemp.conf gelesen werden wollen. Wo liegen diese Dateien?

Gruß Götz
 

feuerwehr

Benutzer
Mitglied seit
17. Jan 2014
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
"digitemp_DS2490" ist ein Programm welches über USB-1Wire Adapter einen Tempfühler ausliest.
Wenn ich "digitemp_DS2490 -a -o"%C" -q" über die Textkonsole KiTTY eingebe bekomme ich z.B. 23.0012 angezeigt, ist die gemessene Temperatur.
Die angezeigten Werte variieren je noch Attribute hinter der "digitemp_DS 2490" Programmzeile.
An PATH könnte es liegen ich muss da mal schauen, wo "digitemp" noch was versteckt.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.102
Punkte für Reaktionen
3.917
Punkte
488
Dann nimm doch einfach mal die beiden Zeilen "PATH=..." und "export PATH" aus der /etc/profile mit in das Script auf, also z.B.
Code:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
export PATH
/opt/bin/digitemp_DS2490 -a -o"%C" -q >/usr/local/bin/test.log 2>&1
 

feuerwehr

Benutzer
Mitglied seit
17. Jan 2014
Beiträge
40
Punkte für Reaktionen
0
Punkte
0
@goetz
hatte dein Post nicht gelesen sorry

digitemprc ist in /opt/bin
digitemp.conf wird durch das Attribut -c gesetzt und ist von mir bisher noch nicht benötigt worden.

@Benares

mach ich mal
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat