Cronjob logs?

Status
Für weitere Antworten geschlossen.

Merris

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
Hallo Götz,

sorry, ich hatte ein Typo im Script. Jetzt funktioniert es vom Terminal aus. Gehe mal davon aus, dass der Cronjob jetzt auch automatisch läuft. Kann ich jetzt gut feststellen, weil entsprechend Deinem Vorschlag der Job geloggt wird. Super - Danke! :)
Habe noch eine andere Frage:
Kann es sein, dass ein Cronjob von einer alten Installation irgendwo im Hintergrund läuft und dieser Job auch nicht unter crontab angezeigt wird? Ich hatte ja das Problem, dass meine alte Cronjob Installation mit dem Itari Script nach update auf DSM 5.1 nicht mehr lief. Jedenfalls wird das Script nicht mehr ausgeführt. Der alte Cronjob wird nicht angezeigt, aber ich habe den Verdacht, dass er immer noch im Hintergrund läuft. Es erfolgen Einträge in meine Datenbank, die eigentlich nicht da sein dürften - zeitlich.
Gruß, Merris
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.836
Punkte für Reaktionen
2.272
Punkte
829
Über den cron wird es nur funktionieren, wenn Du die Pfade ergänzt, wie ich es beschrieben habe, eine entsprechende PATH-Variable im Skript ergänzt oder eine profile-Datei sourct.
 

Merris

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
Hier nochmals das Script:

#!/bin/sh
echo $(date) "Script UVR1611 ausgeführt" >>/volume1/web/log/cron.mylog
wget 'http://localhost/uvr1611/analogChart.php' -O /dev/null


Das Script liegt unter /etc/cron.hourly/uvr1611-logger
Was hat es mit den anderen Pfaden auf sich?
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.836
Punkte für Reaktionen
2.272
Punkte
829
Cron verfügt im Gegensatz zu einer Usershell nicht über eine Umgebung, die u.a. eine in einer profile- bzw. .profile-Datei gesetzte PATH-Variable enthält. Probiere es doch einfach mit den Pfaden aus, dann wird es funktionieren.
 

Merris

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
Also, der Cronjob wird ausgeführt - alle halbe Stunde - so wie in crontab eingestellt. Problem lag wie von Götze richtig erkannt an dem bash Kommand.

Im Hintergrund läuft jedoch noch ein "alter" Cronjob und den möchte ich finden. In Crontab wird dieser nicht angezeigt, aber es werden Daten in meine Datenbank geschrieben - alle 5 Minuten (so war der alte Job). Deshalb war meine aller erste Frage, wo kann man sehen welche Cronjobs überhaupt ausgeführt werden?
Wenn hier jemand weiter helfen könnte, wäre es prima.
Danke und Gruß, Merris
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.836
Punkte für Reaktionen
2.272
Punkte
829
Schau in /etc/crontab.

Hast Du überprüft, dass das Skript nicht nur läuft, sondern auch das Richtige tut?
 

Merris

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
Ja, das Script schreibt die Daten in die Datenbank soweit ich das dort sehen kann.

Cron.log sieht so aus:
2015-04-14 09:30:13 (35.4 KB/s) - '/dev/null' saved [2]

Apr 14 10:00:01 crond: USER root pid 20317 cmd /etc/cron.hourly/uvr1611-logger
--2015-04-14 10:00:01-- http://localhost/uvr1611/analogChart.php
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/json]
Saving to: '/dev/null'

0K 32.6K=0s

2015-04-14 10:00:12 (32.6 KB/s) - '/dev/null' saved [2]

Apr 14 10:30:01 crond: USER root pid 21749 cmd /etc/cron.hourly/uvr1611-logger
--2015-04-14 10:30:01-- http://localhost/uvr1611/analogChart.php
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/json]
Saving to: '/dev/null'

0K 48.7K=0s


Wäre prima, wenn Du mir die Sache mit den Pfadsetzen näher erläutern könntest. Vielleicht komme ich dadurch meinem anderen Problem auf die Spur. Denke bitte daran, dass ich kein Experte in diesen Sachen bin und Du Vieles nicht voraussetzen solltest :) Mir ist nämlich immer noch nicht klar, wo ich welche Pfade - wie von Dir vorgeschlagen - setzen soll?
Danke und Gruß, Merris
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.836
Punkte für Reaktionen
2.272
Punkte
829
Ich habe es ja schon versucht: Wenn Du eine Usershell öffnest, werden Umgebungsvariablen und Konfigurationseinstellungen aus der /etc/profile und der ~/.profile (bzw. ~/.bash_profile) gelesen. Eine davon ist PATH (z.B. PATH=/bin:/sbin:/usr/bin:/usr/sbin/:/usr/syno/bin:/usr/syno/sbin). Dies passiert bei einem cronjob nicht, so dass Programme nicht über die die Pfade (in der ja nicht gesetzten PATH-Variable) gefunden werden können. Schreibt man in sein cron-Skript nun den kompletten Pfad zu einem Programm mit hinein (z.B. /bin/date statt date), umgeht man dieses Problem.
 

Merris

Benutzer
Mitglied seit
18. Jan 2013
Beiträge
34
Punkte für Reaktionen
0
Punkte
6
ok, Danke, ich glaube jetzt habe ich es verstanden. Mein Script sollte also so aussehen:

#!/bin/sh
/bin/echo $(/bin/date) "Script UVR1611 ausgeführt" >>/volume1/web/log/cron.mylog
/usr/syno/bin/wget 'http://localhost/uvr1611/analogChart.php' -O /dev/null


Werde das mal so laufen lassen und sehen, ob sich was ändert.
Gruß, Merris
 
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