Cronjob Fragen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

stevechief

Benutzer
Registriert
26. Juli 2008
Beiträge
94
Reaktionspunkte
0
Punkte
6
Hi,

habe zwei Fragen zu Cronjobs:

Welchen Befehl brauche ich um

a) Ein PHP Script im WEB Ordner ner DS ausführen zu lassen
b) Die DS dazu zubringen ein Script im Internet (URL) aufrufen zu lassen?

Vielen Dank und MFG

Stefan
 
Hi,

habe zwei Fragen zu Cronjobs:

Welchen Befehl brauche ich um

a) Ein PHP Script im WEB Ordner ner DS ausführen zu lassen

php php-Script (musst aber vorher den php per ipkg installieren)

b) Die DS dazu zubringen ein Script im Internet (URL) aufrufen zu lassen?

wget url

Vielen Dank und MFG

Stefan

greetings

itari
 
php php-Script (musst aber vorher den php per ipkg installieren

Und wie stelle ich das an?

Vielen Dank und MFG

Stefan

Edit:

Noch eine Frage:

Habe den Befehl "mount --bind / /volume1/root" in die crontab geschrieben, scheint aber auch nicht zu funktionieren?
 
Habe den Befehl "mount --bind / /volume1/root" in die crontab geschrieben, scheint aber auch nicht zu funktionieren?
Der gehört da auch nicht rein. Sondern einfach als Telnet-Befehl absetzen.
Ich mache das so:
Im DS-Manager unter -> System ->Zeit eine NTP-Zeitserver-Synchronisation einrichten. Dadurch wird /etc/cronab erzeugt und mit einer Zeile befüllt.
Einmalig das Verzeichnis /volume1/public/DS-system/root erzeugen.
Per Telnet-Befehl
mount --bind / /volume1/public/DS-system/root
die Verküpfung herstellen.
Mit dem TotalCommander bzw. Explorer auf /volume1/public/DS-system/root/etc/crontab navigieren und die Datei in einen unix-Format kompatiblen Editor laden (z.B. ConText, Utraedit).
Editor so einstellen, dass ein Tab auch ein Tab bleibt und nicht in Blanks konvetiert wird.
Beispiel für Einträge (die Spalten MUESSEN durch TABs getrennt werden):

#minute hour mday month wday who command
03 01 * * * root /usr/sbin/ntpdate -b rustime01.rus.uni-stuttgart.de
00 12 * * * root /usr/syno/bin/mplayer /volume1/music/fanfare.mp3

Datei unter /volume1/public/DS-system/root/etc/crontab speichern

Cron-Mechanismus starten:

Entweder:
/usr/syno/etc.defaults/rc.d/S04crond.sh stop
/usr/syno/etc.defaults/rc.d/S04crond.sh start

oder falls ein logfile gewünscht
killall crond
crond -l0 -c /var/spool/cron/crontabs/ -L /var/log/crond.log

Mit
cat /var/spool/cron/crontabs/root
Kann man sich die crontabs listen lassen.

Mit
ps | grep crond
kann man sehen, ob cronjob läuft. Antwort z.B.
1152 root 676 S /usr/sbin/crond
13132 root 208 S grep crond
Wichtig ist die erste Zeile.

Weitere Beispiele für crontab: http://www.linuxhilfen.org/befehle/crontab.html . Suchmaschine + Wikipedia geben noch mehr Beispiele

Gruss
Juergen
 
Irgendwie bekomme ich es nicht hin.

wget URL als telnet befehl ruft einwandfrei die URL auf.

wget URL in der crontab macht gar nix!

cron neu gestartet hab ich.

Die URL soll alle 15 Minuten aufgerufen werden.

Was könnte ich falsch machen?


MFG Stefan
 
Keine Ahnung, was Deine url macht. Wohin soll sie ausgeben? Wenn sie etwas in eine Datei schreibt, kannst Du das sehen. Outputs auf einem Bildschirm ist nicht so einfach.
Starte mal mit
killall crond
crond -l0 -c /var/spool/cron/crontabs/ -L /var/log/crond.log

und schaue in /var/log/crond.log ob die jobs ausgeführt werden.
 
Hallo

Ich wollte gestern meinen ersten Cronjob in der Datei Crontab erfassen, doch es funktioniert noch nicht.

Was habe ich gemacht.

Zuerst habe ich meinen Befehl


über Telnet getestet und dies hat auch super funktioniert.
Anschliessend habe ich folgende Zeile in der Crontab Datei erfasst.

#minute hour mday month wday who command
00 */1 * * * root wget -O - http://localhost/cron_update.php?p=1

in der Hoffnung das mein Command jede Stunde ausgeführt wird, doch leider passiert da nichts.

Meine FRage ist nun, ist mein Syntax/Command falsch, oder läuft Cronjob gar nicht automatisch im Hintergrund, muss ich da zuerst den Cronjob-Service starten? Falls man den Service starten muss, gibt es da einen Trick um den Service automatisch zu starten?

Vielen Dank
Gruss Cruzer
 
Nach jeder Veränderung der /etc/crontab muss man den crond (Cron-Server) neu starten, damit der das auch mitbekommt. Und dran denken, dass Tabulatoren als Trennzeichen bei den Zeitangaben in der crontab verwenden werden, sonst gehts nicht.

itari
 
Vielen Dank für die super schnelle Antwort.

Das heisst somit einfach kurz über Telnet

/usr/syno/etc.defaults/rc.d/S04crond.sh stop
/usr/syno/etc.defaults/rc.d/S04crond.sh start

ausführen.

Gruss Cruzer
 
Hab da auch mal so ein kleines problem.

Bin gerade dabei ein Script zu schreiben welches mir von einem externen FTP (Webserver) via FTP (ftpcopy) die Daten rüberhollt und in einem Ordner speichert.
Soweit so gut wenn ich die SH von hand ausführen, aber was mache ich im cronjob falsch ?

Mein letzter Stand ist im Anhang.

Hoffe mir kann da jemand helfen ;)

DANKE
 

Anhänge

  • cron.jpg
    cron.jpg
    36 KB · Aufrufe: 478
Zuletzt bearbeitet:
Hoffe mir kann da jemand helfen
Ist das # am Anfang der 2. Zeile Absicht? Ich nutze das, um eine Zeile als nicht auszuführenden Kommentar zu kenzeichnen. Was passiert ohne das # ? Gruss, Juergen
 
Ja, das war jetzt damit er diesen fehler welcher unter der Tabelle
"cannot ..... " anzeigt, bzw immer wieder ausgeführt wird.

Muss ich da irgendwelche Rechte oder so beachten ?

Bin echt ein Anfänger was Linux angeht, 24h gerade mal hehe =)
 
So, ich hoffe ich habe den Fehler gefunden.
Das script lief soweit super, nur da ich es über das WebInterface den cron geändert und neugestartet hatte, denke ich hatte dieser nicht die rechte dir er für die root haben muss.
Somit hab ich es über die console mit
killall crond;crond -l 8 -L /var/log/cron.log
neugestartet und scheinbar geht es jetzt.

Werde es einige stunden beobachten ob er mir jede stunde ein backup macht und dann denke ich wird es laufen.

mfg
 
# am Anfang einer Zeile bedeutet das Auskommentieren der Zeile, also die Zeile wird dann nicht ausgeführt. Das ist an vielen Stellen in Linux so üblich.

Ich hoffe, dass dein Skript geht.

itari
 
jo, das war mir bewusst, ich hatte die zeile ja auskommentier dannach.

jetzt geht es nachdem ich den crontab per ssh/telnet gestartet habe =)
 
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