PDA

Bekijk Volledige Versie : cronjob op laatste dag van de maand



copyfile
14/11/10, 18:48
Ik wil eigenlijk dat DA de laatste van de maand maand.php uitgevoerd. Hoe kan ik dit doen in DA ? Of is dit niet mogelijk ? Heb de optie namelijk nergens gevonden !

Dennis
14/11/10, 18:54
1 1 * * *[ `date +%d` -eq `echo `cal` | awk '{print $NF}'` ] && /root/scripts/backup.sh

copyfile
14/11/10, 19:36
Hoef ik hieraan alleen het pad naar het script te veranderen ? Snap hem niet helemaal. Voor een andere cronjob heb ik b.v. :

15 1 * * * /usr/local/bin/php -q -f /home/site/domains/site.com/public_html/beta/index.php

Geert-Jan
14/11/10, 19:49
1 1 * * *[ `date +%d` -eq `echo `cal` | awk '{print $NF}'` ] && /usr/local/bin/php -q -f /home/site/domains/site.com/public_html/maand.php

dreamhost_nl
14/11/10, 21:15
Laat gewoon de cronjob op de 28e, 29e, 30e en 31e draaien en laat de cronjob bepalen of dat de laatste dag van die maand is alvorens deze daadwerkelijk iets gaat doen.
Overigens zou het gemakkelijker zijn om de cronjob gewoon op de 1e van de maand om 0:00 uit te voeren; scheelt maar één minuut en kost minder hoofdbreken... ;)

Geert-Jan
14/11/10, 21:22
Overigens zou het gemakkelijker zijn om de cronjob gewoon op de 1e van de maand om 0:00 uit te voeren; scheelt maar één minuut en kost minder hoofdbreken... ;)

Daar heb ik aan gedacht, maar dan ben je afhankelijk van wat zijn bestand maand.php moet doen, daar houd jij nu geen rekening mee.

copyfile
14/11/10, 22:57
De bedoeling is dat een directadmin api script de webruimte en bandbreedte die gebruikt wordt in een database wordt gezet. Deze moet dus echt op de laatste dag van de maand draaien en niet de 1e van de nieuwe maand aangezien dan alles al gereset is. Voldoet het gegeven script van Geert-Jan dan of kan ik het beter anders doen ? Moet namelijk nog wel effe wachten voor het, het einde van de maand is :)

Ramon Fincken
14/11/10, 23:43
maar .. op die laatste dag .. stel dat lukt je .. wanneer draai je dat dan? 5 voor 12 in de nacht? En wat doe je als door load je die tijd niet haalt?

copyfile
15/11/10, 00:19
Ja dat zijn inderdaad goede vragen. Ik zou graag horen wat jullie denken dat de beste oplossing hiervoor zou zijn. Ik weet niet precies hoelaat directadmin de webspace en bandwidth resetten ? Ik moet er voor die tijd dus zijn, en een veilige marge hebben voor de eventuele load.

wdr
15/11/10, 08:16
Als je het in combinatie met BASH-Scripting kan doen, kun je um de 29e, 30e en 31e laten lopen. Ik heb dit opgelost door een 'if' in mijn bash-script:


if [ `date -d tomorrow +%d` -eq '01' ]; then

Ramon Fincken
15/11/10, 08:52
Mss een stomme vraag .. maar DA heeft PER domein en dan nog per type (web,ftp etc..) een dataverkeer log ( kun je ook mooi grafisch (tabel) uitlezen in DA zelf )

is dat niet wat je zoekt? Dus zorgen dat je daarbij kunt en dan heeft DA per dag al dingen voor je uitgezocht? Sla je de boel evt in een DB op en dan tel je de boel bij-elkaar als je op dag 01 aangekomen bent?

copyfile
15/11/10, 12:34
Nee ik wil het echt aan het einde van de maand in een mysql database hebben. Script heb ik al nu alleen nog zorgen dat hij op de juiste tijd wordt uitgevoerd. Hoe zou ik anders zoals gemeld ervoor kunnen zorgen dat de cronjob de 29/30/31e loopt ? Dan kan ik inderdaad in mijn script zelf kijken of het al de laatste dag van de maand is.

Marco Mahieu
15/11/10, 12:57
Nee ik wil het echt aan het einde van de maand in een mysql database hebben. Script heb ik al nu alleen nog zorgen dat hij op de juiste tijd wordt uitgevoerd. Hoe zou ik anders zoals gemeld ervoor kunnen zorgen dat de cronjob de 29/30/31e loopt ? Dan kan ik inderdaad in mijn script zelf kijken of het al de laatste dag van de maand is.

http://lmgtfy.com/?q=cronjob ;)

Geert-Jan
15/11/10, 13:17
http://lmgtfy.com/?q=cronjob ;)
Beetje flauw soms, maar goed.



Nee ik wil het echt aan het einde van de maand in een mysql database hebben. Script heb ik al nu alleen nog zorgen dat hij op de juiste tijd wordt uitgevoerd. Hoe zou ik anders zoals gemeld ervoor kunnen zorgen dat de cronjob de 29/30/31e loopt ? Dan kan ik inderdaad in mijn script zelf kijken of het al de laatste dag van de maand is.

Je kunt dan volstaan als je 3 cronjobs aanmaakt, en 1 maal in de 4 jaar alert bent.
Met deze gegevens moet je de cronjobs kunnen maken:


minute - *
hour - *
day of month - *
month - *
day of week - *


Voor Januari, maart, mei, juli, augustus, oktober, december wordt het dan:


45 23 31 1,3,5,7,8,10,12 * /usr/local/bin/php -q -f /home/site/domains/site.com/public_html/maand.php

Voor Februari wordt:


45 23 28 2 * /usr/local/bin/php -q -f /home/site/domains/site.com/public_html/maand.php


Voor April, juni, september, november wordt het weer:


45 23 30 4,6,9,11 * /usr/local/bin/php -q -f /home/site/domains/site.com/public_html/maand.php


De cronjob draait dan om 23:45, naar gelang aan te passen.
Ben ik nog iets vergeten?????

Marco Mahieu
15/11/10, 13:32
Beetje flauw soms, maar goed.

Mee eens, maar nu niet, want daar staat het nu echt stap voor stap uitgelegt, gelijk bij de 2e link ;)

4 cronjobs lijkt mij overdreven, kans op fouten wordt dan ook groter, en je zit nog met het schrikkeljaar.

Gewoon 1 cronjob die op de 28e, 29e, 30e en 31e wordt uitgevoerd, en in PHP controleren of het de laatste dag van de maand is.

Vooruit, ik zal het even voorzeggen:
* * 28,29,30,31 * * /usr/local/bin/php -q -f /home/*gebruikersnaam*/domains/*domein.nl*/public_html/cronjob.php *

Ramon Fincken
15/11/10, 15:10
Kun je niets met de files in de stats map?

/stats/webalizer.hist bijvoorbeeld?

of de files in de logs map?

Marco Mahieu
15/11/10, 15:15
Mee eens, maar nu niet, want daar staat het nu echt stap voor stap uitgelegt, gelijk bij de 2e link ;)

4 cronjobs lijkt mij overdreven, kans op fouten wordt dan ook groter, en je zit nog met het schrikkeljaar.

Gewoon 1 cronjob die op de 28e, 29e, 30e en 31e wordt uitgevoerd, en in PHP controleren of het de laatste dag van de maand is.

Vooruit, ik zal het even voorzeggen:
* * 28,29,30,31 * * /usr/local/bin/php -q -f /home/*gebruikersnaam*/domains/*domein.nl*/public_html/cronjob.php *

Moet ik het wel goed voorzeggen trouwens:
45 23 28,29,30,31 * * /usr/local/bin/php -q -f /home/*gebruikersnaam*/domains/*domein.nl*/public_html/cronjob.php *

Ramon Fincken
15/11/10, 15:23
volgens mij heb ik t , als je dataverkeer vd hele maand wil zien.

http://www.webhostingtalk.nl/directadmin/116172-dataverkeer-en-webruimte-uitlezen.html
verwijst naar http://www.webhostingtalk.nl/directadmin/109776-traffic-verbruikt-users-zien.html ik zou daar even een reply geven, want de link is down.

Mikey
15/11/10, 16:54
1 1 * * *[ `date +%d` -eq `echo `cal` | awk '{print $NF}'` ] && /usr/local/bin/php -q -f /home/site/domains/site.com/public_html/maand.php



1 1 * * * [[ $(cal) = *$(date +%d) ]] && /usr/local/bin/php -q -f /home/site/domains/site.com/public_html/maand.php


:TLW

copyfile
15/11/10, 22:17
volgens mij heb ik t , als je dataverkeer vd hele maand wil zien.

http://www.webhostingtalk.nl/directadmin/116172-dataverkeer-en-webruimte-uitlezen.html
verwijst naar http://www.webhostingtalk.nl/directadmin/109776-traffic-verbruikt-users-zien.html ik zou daar even een reply geven, want de link is down.

Dit is inderdaad beter dan wat ik aanvankelijk in gedachten had. Bedankt !

Ramon Fincken
15/11/10, 22:18
NP, je kunt beter maar uitgaan van info die er is EN compleet is, zonder houtje touwtje in log/stats te gaan zitten lezen :) Hoop dat t script nog boven water gehaald kan worden!