Portál AbcLinuxu, 26. dubna 2024 19:38


Dotaz: CRON v určitý čas

29.10.2011 16:24 Jakub
CRON v určitý čas
Přečteno: 757×
Odpovědět | Admin
Zdravím. Už si nevím rady.

Mám v /etc/crond.d/ vytvořený soubor s obsahem:

SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

14 16 * * * root /usr/bin/lynx -source "http://NECO.cz/cron.php?news"

Ale úloha se v 16:14 vůbec neprovede. Ani v syslog není žádná zmínka.

Ale když CRON nastavím na

14 * * * * root /usr/bin/lynx -source "http://NECO.cz/cron.php?news"

Tak se to v *:14 provede. Úloha se nechce spustit vždy, když nastavím nějakou hodinu.

Můžete mi někdo poradit, co mohu dělat dělat blbě?

Mockrát děkuji.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.10.2011 18:06 none
Rozbalit Rozbalit vše Re: CRON v určitý čas
Odpovědět | | Sbalit | Link | Blokovat | Admin
Spravny cas (casova zona) na serveru kde cron bezi? Pust `date` a srovnej cas s realnym casem.
29.10.2011 18:12 Jakub
Rozbalit Rozbalit vše Re: CRON v určitý čas
Správný: Sat Oct 29 18:10:20 CEST 2011
29.10.2011 18:50 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: CRON v určitý čas
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co je tam ten 'root'?
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
29.10.2011 18:57 Kit
Rozbalit Rozbalit vše Re: CRON v určitý čas
Také nechápu, proč se Jakub snaží browsovat pod rootem. Když se použije crontab, tak se tam to "root" samozřejmě nepíše.
29.10.2011 19:06 l4m4
Rozbalit Rozbalit vše Re: CRON v určitý čas
To je vcelku jedno, proč to má spouštět zrovna root. Je-li to systémový crontab, tak tam jméno uživatele, pod kterým má job běžet, patří.
29.10.2011 19:12 Kit
Rozbalit Rozbalit vše Re: CRON v určitý čas
IMHO stahování novinek, pokud se netýkají přímo OS, do systémového cronu prostě nepatří. Umístění do uživatelského crontabu má mj. i výhodu v tom, že se při jeho modifikaci nemusím přihlašovat jako root. O bezpečnosti nemluvě.
29.10.2011 19:24 Jakub
Rozbalit Rozbalit vše Re: CRON v určitý čas
Mám tam jiného uživatele. Jen jsem zkoušel příklady z webu. V Linuxu jsem laik. Ale vrtá mi hlavou, proč se daná úloha nespustí v přesně daný čas.
29.10.2011 19:26 Jakub
Rozbalit Rozbalit vše Re: CRON v určitý čas
Jinak to není skript na stahování novinek. Má sloužit k denní kontrole, zda jsou na webu vložené nové novinky - pokud ano, rozešle upozornění odběratelům.
29.10.2011 19:44 Kit
Rozbalit Rozbalit vše Re: CRON v určitý čas
Pokud jsi začátečník, tak místo systémového cronu zkoušej raději své experimenty spuštěním
crontab -e
Uvidíš, že je to mnohem pohodlnější. Možná ti to bude i fungovat.
14 16 * * * /usr/bin/lynx -source "http://NECO.cz/cron.php?news"
Všimni si, že slůvko "root" tam už není.
29.10.2011 20:08 l4m4
Rozbalit Rozbalit vše Re: CRON v určitý čas
Nespouští-li se job v systémovém crontabu, tak je ještě nějaký jiný problém, než že je někdo začátečník a má to dělat jinak. A tento problém zůstane, až bude potřebovat něco spustit jako root.
29.10.2011 20:16 Kit
Rozbalit Rozbalit vše Re: CRON v určitý čas
Není například nutné po editaci souborů cronu restartovat démona?
29.10.2011 20:52 Jakub
Rozbalit Rozbalit vše Re: CRON v určitý čas
Vložen řádek: 44 20 * * * /usr/bin/lynx -source "http://NECO.cz/cron.php?news"

# For more information see the manual pages of crontab(5) and cron(8)
# c
# m h  dom mon dow   command
44 20 * * * /usr/bin/lynx -source "http://zsprusy.cz/cron.php?news"
Úloha se nerpovedla.

Když jsem ale vložil řádek (nezadal přesnou hodinu): 46 * * * * /usr/bin/lynx -source "http://zsprusy.cz/cron.php?news"

Úloha se již provede

29.10.2011 21:01 Kit
Rozbalit Rozbalit vše Re: CRON v určitý čas
Možná hloupost: Jdou ti správně hodiny? Mám na mysli nejen správně nastavený čas, ale i časovou zónu. Mně to například píše:
$ date
So říj 29 20:59:32 CEST 2011
29.10.2011 21:04 Jakub
Rozbalit Rozbalit vše Re: CRON v určitý čas
Mne to vypíše Sat Oct 29 21:01:34 CEST 2011

Ale chyba nalezena. Když nastavím CRON na 19H a 1M - tak se provede v 21H 1M. To je ono, proč mi to nešlo při zadání hodiny.

Ale nevím, kde je blbě nastaven čas, když my date píše správný??
29.10.2011 21:18 Kit
Rozbalit Rozbalit vše Re: CRON v určitý čas
Při instalaci systému se zadává, zda HW hodiny používají UTC. Pokud je na stroji dualboot s Windows, lepší je "ne", jinak "ano". Netuším, zda to mohlo mít nějaký vliv.

Vypadá to, jako kdyby cron běžel v UTC. Možná jen root má nastaveno, že má běžet v UTC, ostatní mají CEST.
29.10.2011 21:57 Kit
Rozbalit Rozbalit vše Re: CRON v určitý čas
Našel jsem tohle: The CRON_TZ variable specifies the time zone specific for the cron table. Zkus v crontabu nastavit
CRON_TZ='Europe/Prague'
29.10.2011 22:15 Jakub
Rozbalit Rozbalit vše Re: CRON v určitý čas
Díky!

V systémovém souboru CRONU je: TZ=`cat /etc/timezone`

Na internetu jsem našel návod pro jeho změnu. Provedl restart a již to JDE..

Jinak by to určitě také šlo napsat rovnou: TZ='Europe/Prague'

Mockrát děkuji.
29.10.2011 22:30 Kit
Rozbalit Rozbalit vše Re: CRON v určitý čas
Skvělé, tedy správným řešením by mělo být asi
echo 'Europe/Prague' > /etc/timezone
Doufejme, že to zase nějaký démon nepřepíše :-)
29.10.2011 19:44 none
Rozbalit Rozbalit vše Re: CRON v určitý čas
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podle ceho usuzujes, ze se uloha neprovede? Zkus si pridat jeste jednu ulohu pod svou:
14 16 * * * root /usr/bin/lynx -source "http://NECO.cz/cron.php?news"
14 16 * * * root /bin/touch /tmp/file
A sleduj, jestli se provedla...
29.10.2011 20:41 Jakub
Rozbalit Rozbalit vše Re: CRON v určitý čas
1, Viděl bych to v syslogu 2, V databázi bych viděl zprávu o odeslání emailů 3, Přišel by mi 'Emailový zpravodaj' do emailové schránky
29.10.2011 21:05 none
Rozbalit Rozbalit vše Re: CRON v určitý čas
Prikazy se vykonavaji v cronu postupne, ozkousej tu metodu co jsem ti poslal. Pokud neprobehne tvoje prvni uloha, tak neprobehne ani ta druha.
29.10.2011 21:09 Jakub
Rozbalit Rozbalit vše Re: CRON v určitý čas
Ale chyba nalezena.

Když nastavím CRON na 19H a 1M - tak se provede v 21H 1M. To je ono, proč mi to nešlo při zadání hodiny.

Ale nevím, kde je blbě nastaven čas, když my date píše správný??
29.10.2011 21:16 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: CRON v určitý čas
Je docela rozdíl mezi hledáním chyby "příkaz se vůbec neprovedl" a "příkaz se provedl o dvě hodiny později".

Podíval bych se na

http://www.mail-archive.com/linux-users@it.canterbury.ac.nz/msg30738.html

http://superuser.com/questions/248841/how-to-run-cron-jobs-on-gmt-not-local-time
29.10.2011 20:48 pavel
Rozbalit Rozbalit vše Re: CRON v určitý čas
1. Edituj crontab pomocí příkazu: crontab -e

2. Cron je omezen na /bin/sh a z důvodu bezpečnosti nejsou např. nastaveny proměnné uživatele. Je lepší si napsat skript a ten potom spouštět z cronu, například:

14 16 * * * /root/mujskript

Obsah souboru "mujskript":

#!/bin/bash

/usr/bin/lynx -source "http://NECO.cz/cron.php?news"
29.10.2011 20:52 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: CRON v určitý čas
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dost často se mi s českou klávesnicí v shellu stává, že se do příkazu dostane neviditelný znak, který nejde pořádně smazat a ukáže se až při opakovaném výpisu řádky. Takový příkaz pak samozřejmě nefunguje, ač na první pohled vypadá v pořádku. Nedostává se ti tam při přepisu té hvězdičky na 16 taky nějaký takový bordel? Měníš to v nějakém editoru se zvýrazněním syntaxe? Mrkni na obsah třeba přes mcedit v hexadecimálním režimu, jestli tam není nějaký netisknutelný znak navíc.
29.10.2011 22:15 Jakub
Rozbalit Rozbalit vše Re: CRON v určitý čas
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vyřešeno

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.