crontab-einträge laufen 20-fach

  • 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.

Bezkeroon

Benutzer
Registriert
06. Dez. 2012
Beiträge
6
Reaktionspunkte
0
Punkte
1
Hi :)

ich bin - zumindest als Poster - neu hier im Forum und wollte Nachfragen ob mir von euch jmd bei meinem Problem helfen kann:

ich habe ein paar cronjobs nach dieser Anleitung eingerichtet: http://www.synology-wiki.de/index.php/Cron
So sieht meine crontab aus
Rich (BBCode):
#minute	hour	mday	month	wday	who	command
11	23	*	*	1,4	root	/usr/bin/php -n -d safe_mode_exec_dir='' /usr/syno/bin/autoupdate.php
40	21	*	*	3,6	root	/usr/syno/bin/synopkg chkupgradepkg
0	*	*	*	*	root	wget -q http://127.0.0.1/___cron.php?scanDirs=1
15	*	*	*	*	root	wget -q http://127.0.0.1/___cron.php?checkCacheFiles=1
20	*	*	*	*	root	wget -q http://127.0.0.1/___cron.php?cleanUp=1
#6-59	*	*	*	*	root	wget -q http://127.0.0.1/___cron.php?doQueue=1
#laeuft nicht pro minute, sondern alle 30s - warum auch immer
#erste 15 Minuten in der Stunde nur einen crontask, damit scanDirs mehr Ruhe hat
15-59	*	*	*	*	root	wget -q http://127.0.0.1/___cron.php?doQueue=1
15-59	*	*	*	*	root	wget -q http://127.0.0.1/___cron.php?doQueue=1
0-59	*	*	*	*	root	wget -q http://127.0.0.1/___cron.php?doQueue=1
45	4	*	*	*	root	wget -q http://127.0.0.1/___cron.php?cacheCleaner=1
13	*	*	*	*	root	/var/packages/Webalizer/target/bin/webalizer -c /var/packages/Webalizer/target/webalizer.conf


es läuft auch nur ein crond prozess und ich habe keine user-crontabs gefunden.
Trotzdem wird jede Zeile zwar zur richtigen Zeit (wobei anfangs minütliche Cronjobs alle 30s liefen ^^), aber gleich 20x ausgeführt...

Kennt jmd das Problem und weiss Abhilfe?

Viele Dank im Voraus

Bezkeroon

P.S.: habe eine DS412+
 
Zuletzt bearbeitet:
nein, es soll jede Minute von 15-59 starten. und zweimal ist der eintrag drin, weil er zweimal starten soll.
in diesem fall wird der job aber 40x ausgeführt - jede Zeile 20x
 
Bist du ganz sicher, dass der Queue Job auch wirklich in 60 Sec durch ist?
 
ach ja, was ich will:
ich habe ein php-skript, das verschiedene Aktionen durchführt. Durch den Cronjob will ich das zeitgesteuert aufrufen (was auch geht, nur wird zu oft aufgerufen ^^)
0 * * * * root wget -q http://127.0.0.1/___cron.php?scanDirs=1
scanDirs soll einmal zur vollen Stunde laufen

15 * * * * root wget -q http://127.0.0.1/___cron.php?checkCacheFiles=1
checkCacheFile jede Stunde + 15 Minuten (8:15, 9:15, ...)

20 * * * * root wget -q http://127.0.0.1/___cron.php?cleanUp=1
cleanUp jeder Stunde + 20 Minuten

15-59 * * * * root wget -q http://127.0.0.1/___cron.php?doQueue=1
15-59 * * * * root wget -q http://127.0.0.1/___cron.php?doQueue=1
0-59 * * * * root wget -q http://127.0.0.1/___cron.php?doQueue=1
Minütlich doQueue - der Prozess soll von Minute 15-59 3x parallel laufen, deswegen die doppelten Einträge

und zu guter letzt
45 4 * * * root wget -q http://127.0.0.1/___cron.php?cacheCleaner=1
um 4:45 täglich cacheCleaner

sollte ich das anders lösen? Also das ganze mehr PHP-Seitig steuern?
 
Bist du ganz sicher, dass der Queue Job auch wirklich in 60 Sec durch ist?

ist er - ich habe das Skript am ende einfach nur einen logeintrag in die Datenbank machen lassen - mehr nicht (also quasi instant durch) - und dann gesehen (ebenso wie im access-log), dass jedes wget 20fach ausgeführt wird
 
hast du mal probiert ob es korrekt läuft wenn du nur einen der queue Job laufen hast? Also die anderen mal auskommentieren und dann alle laufenden Instanzen des PHP Scripts killen und am Schluss den cron neustarten. Btw was macht das PHP File? Öffnet es irgendwelche Files schreibend? Oder wirklich nur einen SELECT auf mysql?
Btw 2: Synology hat afaik php-cli mit an Bord. Ich würde das Script eher als CLI Script anlegen und dann auch via dem PHP Interpreter auf der Kommandozeile aufrufen. Da dürfte weniger Overhead sein, weil du nicht zusätzlich noch den Apache bemühen musst. Hat zwar wohl nichts mit deinem Problem zu tun, ist imho aber wohl performanter :-)
Ich würde zudem überlegen ob du wirklich 3 parallele Instanzen des Scripts haben willst. Allenfalls wäre es sinnvoller das Script minütlich nur einmal aufzurufen und dann einfach im PHP Code das ganze in einer Schleife dreimal ausführen zu lassen
 
Zuletzt bearbeitet:
selbes ergebnis: dieser eine Eintrag wird 20 mal pro Minute ausgeführt ^^
und aktuell zum testen mache ich in dem Skript nichts außer einen Eintrag in eine Log-Tabelle der Datenbank
 
Und dein cron Daemon läuft auch sicher nur einmal? Werden alle Jobs (auch jene von Syno) zu oft ausgeführt oder nur deine? Mal das Script mit denselben Parametern mit dem Browser aufgerufen? Wird dann auch 20-fach aufgerufen? Allenfalls mal ein PHP Testfile erstellen und sowohl im Browser als auch via cron aufrufen.
 
der cron daemon läuft nur einmal, jo ("ps" als root reicht, oder? auch im webUI der DS ist nur ein crond-prozess gelistet)
Wenn ich das ganze im Browser aufrufe wird es nur einmal ausgeführt (ein logeintrag in der datenbank)


hab das Problem gefunden - es ist nicht der CronJob, sondern wget, das mehrere requests parallel macht.
Habe jetzt auf curl umgestellt (CLI verursacht in weiterführenden Skripten aktuell Probleme) und es rennt wie erwartet.

Viele Dank trotzdem für die nette prompte Hilfe :)
 
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