Cronjob Fragen

Status
Für weitere Antworten geschlossen.

stevechief

Benutzer
Mitglied seit
26. Jul 2008
Beiträge
94
Punkte für Reaktionen
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
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
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
 

stevechief

Benutzer
Mitglied seit
26. Jul 2008
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
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?
 

juergen@net

Benutzer
Mitglied seit
28. Mai 2008
Beiträge
323
Punkte für Reaktionen
0
Punkte
0
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
 

stevechief

Benutzer
Mitglied seit
26. Jul 2008
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
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
 

juergen@net

Benutzer
Mitglied seit
28. Mai 2008
Beiträge
323
Punkte für Reaktionen
0
Punkte
0
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.
 

cruzer

Benutzer
Mitglied seit
03. Dez 2008
Beiträge
54
Punkte für Reaktionen
0
Punkte
0
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
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
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
 

cruzer

Benutzer
Mitglied seit
03. Dez 2008
Beiträge
54
Punkte für Reaktionen
0
Punkte
0
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
 

MaTriX

Benutzer
Mitglied seit
23. Dez 2008
Beiträge
51
Punkte für Reaktionen
0
Punkte
0
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:

juergen@net

Benutzer
Mitglied seit
28. Mai 2008
Beiträge
323
Punkte für Reaktionen
0
Punkte
0
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
 

MaTriX

Benutzer
Mitglied seit
23. Dez 2008
Beiträge
51
Punkte für Reaktionen
0
Punkte
0
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 =)
 

MaTriX

Benutzer
Mitglied seit
23. Dez 2008
Beiträge
51
Punkte für Reaktionen
0
Punkte
0
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
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
# 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
 

MaTriX

Benutzer
Mitglied seit
23. Dez 2008
Beiträge
51
Punkte für Reaktionen
0
Punkte
0
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