Synology-Forum.nl
Firmware => Synology DSM 5.1 en eerder => Topic gestart door: dborneman op 01 maart 2011, 23:13:34
-
Ik heb al even gezocht op het internet, maar ik kom er niet uit. Ik krijg de crontab niet gevonden en kan dus geen cronjob instellen! Weet iemand de exacte locatie van de crontab?
Ik wil graag voor Magento de volgende cron job instellen:
*/5 * * * * curl -s -o /dev/null http://www.yoursite.com/absolute/path/to/magento/cron.php
Mocht iemand mij hiermee kunnen helpen met alle exacte commands die ik zou moeten uitvoeren in SSH heel graag!
-
Hier al eens de zoekfuctie geprobeerd? Je komt dan een heel aantal keer de exacte lokatie tegen (/etc/crontab)
Wizjos
-
Dat zag ik inderdaad, maar:
Cd /etc/crontab/
Werkt niet, wat doe ik dan verkeerd?
-
voer crontab -e uit op de command prompt. Google even om te begrijpen hoe de editor werkt
-
Dat zag ik inderdaad, maar:
Cd /etc/crontab/
Werkt niet, wat doe ik dan verkeerd?
crontab is een bestand (met de cronjobs er in) in de directory /etc... en naar een bestand kun je geen cd uitvoeren.
Dus: cd /etc
gevolgd door bv.: vi crontab
en je kunt bewerken... (Denk er om dat vi een moeilijke editor is. Hou Google bij de hand voor de commando's en ga crontab niet wijzigen met een windows editor!)
Herstarten van cron doe je via /usr/syno/etc.defaults/rc.d/S04crond.sh
Wizjos
-
Het is inmiddels gelukt:
(http://bornie.nl/photo/convert.php?dir=5072696e7473637265656e73&name=53636865726d61666265656c64696e6720323031312d30332d3032206f6d2031322e35382e34322e706e67&type=1&v=0)
Zit dit er verder okay uit? Ik heb /usr/bin/php vooraan de regel toegevoegd
-
Ziet er op zich mooi uit. Maar... gaat niet werken ben ik bang... Webpagina's moet je benaderen via wget, zie bv. viewtopic.php?f=21&t=5398 (http://www.synology-forum.nl/viewtopic.php?f=21&t=5398)
Wizjos
-
He Wizjos,
Ik heb het nu aangepast naar WGET en tevens een MAILTO toegevoegd voor als een cronjob niet goed wordt uitgevoerd, zie:
(http://bornie.nl/photo/convert.php?dir=5072696e7473637265656e73&name=53636865726d61666265656c64696e6720323031312d30332d3032206f6d2031332e33342e31362e706e67&type=1&v=0)
Maakt het verder eigenlijk nog veel uit ik een cronjob aanroep via bv. cronjob.sh of cronjob.php? Ik moest bij het aanroepen van het .sh bestand werken met het volledige path van wat bestanden en om deze reden had ik gekozen om te werken met de .php extensie (zie ook: http://www.magentocommerce.com/wiki/1_- ... a_cron_job (http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job))
-
Maakt het verder eigenlijk nog veel uit ik een cronjob aanroep via bv. cronjob.sh of cronjob.php?
Dat zou ik werkelijk even niet weten...
-
Nee zolang je maar op de juiste manier aanroept;
php doe je
/usr/bin/php file.php
en een sh doe je
./file.sh
beide moet exec permissies hebben (chmod +x file.php of chmod +x file.sh)
Ik vraag me alleen af of de php-interpreter het snapt als je een wget doet ... denk het niet eigenlijk
-
Is er een manier om te controleren of de cron job op dit moment werkt? Ik zag op het forum van Magento (systeem waar ik de Cronjob voor gebruik) dat ik wel Wget of Curl moest gebruiken
-
Ehh ja.. Ik neem aan dat de cronjob "iets" doet wat zichtbaar wordt als het gelopen heeft. Waarom heb je anders een cronjob gemaakt.
Maar je kan ook info terug vinden in: /var/log/cron.log
-
Ehh ja.. Ik neem aan dat de cronjob "iets" doet wat zichtbaar wordt als het gelopen heeft. Waarom heb je anders een cronjob gemaakt.
Maar je kan ook info terug vinden in: /var/log/cron.log
Dan moet je dat wel aanzetten... Edit hiertoe /usr/syno/etc.defaults/rc.d/S04crond.sh:
#!/bin/sh
#
# S04crond.sh - startup script for crond
#
# This goes in /usr/syno/etc/rc.d and gets run at boot-time.
CROND=/usr/sbin/crond
case "$1" in
start)
<------>if [ -x "$CROND" ] ; then
<------><------>mkdir -p /var/spool/cron/crontabs/
<------><------>ln -sf /etc/crontab /var/spool/cron/crontabs/root
<------><------>echo "Starting crond..."
<------><------>$CROND -l 8 -L /var/log/cron.log
<------>fi
<------>;;
stop)
<------>echo "stop crond"
<------>kill -USR1 `cat /var/run/crond.pid` > /dev/null 2>&1
<------>;;
*)
<------>echo "usage: $0 { start | stop }" >&2
<------>exit 1
<------>;;
esac
Het gaat dan om de vijfde regel in start): $CROND -l 8 -L /var/log/cron.log
Wizjos
-
Dat is ook gelukt met de VI editor heb ik dat erbij gezet, maar cron restarten moet ik doen met:
/usr/syno/etc.defaults/rc.d/S04crond.sh zei je vul ik dan het volgende in:
# /usr/syno/etc.defaults/rc.d/S04crond.sh restart
online kwam ik dit command tegen:
# /etc/init.d/crond restart
-
Van je crontab file klopt niets, behalve de oorspronkelijke ntpdate regel.
Post de exacte inhoud nog eens een keer, zonder jpg plaatje, maar als tekst in een code-blok, ajb.
Je moet php scripts aanroepen via een wget met een http -url en niet met /bin/php en al helemaal niet met /bin/php wget
Het beste is het om eerst via de command-line (ssh) het juiste commando te weten.
Dat commando zet je dan in je crontab file, maar dan wel met het volledige path ervoor.
Dus: stap 1 is: log in en probeer erachter te komen wat het juiste commando is om te doen wat je wilt, nl een php script draaien.
-
Het gaat om het systeem Magento waar ik een cron job voor wil draaien. Op deze pagina staat uitgelegd hoe ik de cron.sh kan instellen of cron.php kan laten uitvoeren: http://www.magentocommerce.com/wiki/1_- ... a_cron_job (http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job)
Het leek mij makkelijker om de cron.php elke 5 minuut op te roepen en op deze pagina staat:
If for some reason you can’t locate or access your php binary via crontab, you can also use curl or wget to activate cron.php
*/5 * * * * curl -s -o /dev/null http://www.yoursite.com/absolute/path/to/magento/cron.php
Uiteindelijk gecombineerd met de info die ik hier heb verkregen in het topic heb ik nu in mijn cron file het volgende staan:
/*5 * * * * root /usr/bin/php wget -s -o /dev/null http://www.****.nl/winkel/cron.php
-
Het is belangrijk ervoor te zorgen dat alles na het woord 'root' goed werkt.
In jouw geval moet dus na het woord root dit commando goed werken:
/usr/bin/php wget -s -o /dev/null http://www.****.nl/winkel/cron.php (http://www.****.nl/winkel/cron.php)
Maar dat doet het niet, dat weet ik zeker.
Je moet het veranderen in een commando dat wordt uitgevoerd door wget
Dit moet ongeveer werken:
/usr/syno/bin/wget -q -O /dev/null http://www.****.nl/winkel/cron.php
Het is dus zaak dat je het eerst op de commando regel probeert, en als dat lukt zet je het in de crontab regel!
Overigens is het denk ik genoeg als in de http-url dit staat:
http://localhost/winkel/cron.php
Wanneer je dus een werkende commad-line regel hebt, zorg je dat je crontab er zo uitziet:
*/5 * * * * root /usr/syno/bin/wget -q -O /dev/null http://localhost/winkel/cron.php
Let op de eerste 3 karakters, jij had die verkeerd om in je voorbeeld!
Succes
-
Wat bedoel je precies met het eerst proberen op commando regel?
Ik heb zojuist via SSH even geprobeerd dit command uit te voeren om te kijken of ik hier wat mee kon:
/usr/syno/bin/wget -q -O /dev/null http://www.****.nl/winkel/cron.php
Maar dat werkt verder niet! Wat doe ik precies verkeerd? Als ik het van te voren kan testen is inderdaad wel handig ;-)
Nu krijg ik deze melding:
/usr/syno/bin/wget: invalid option -- 0
Usage: wget [OPTION]... [URL]...
Try `wget --help' for more options.
-
klopt je url wel ??
-
Wat bedoel je precies met het eerst proberen op commando regel?
Ik heb zojuist via SSH even geprobeerd dit command uit te voeren om te kijken of ik hier wat mee kon:
/usr/syno/bin/wget -q -O /dev/null http://www.****.nl/winkel/cron.php
Maar dat werkt verder niet! Wat doe ik precies verkeerd? Als ik het van te voren kan testen is inderdaad wel handig ;-)
Nu krijg ik deze melding:
/usr/syno/bin/wget: invalid option -- 0
Usage: wget [OPTION]... [URL]...
Try `wget --help' for more options.
wget klaagt over invalid option 0 (nul)
Je moet tussen de -q en /dev/null een -O (min hoofdletter o) plaatsen.
-
Ik heb het command nu goed ingevuld (blond dacht dat er inderdaad een nul stond) en het systeem voert vervolgens het proces uit en even later komt er een nieuwe regel met
Servernaam>
Ik denk dus dat dit werkt, maar kan ik dit op een manier controleren?