Difference between revisions of "Cron (Slovenský)"

From ArchWiki
Jump to: navigation, search
(wikify some external links, use https for archlinux.org)
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Category:Slovenský]]
 
[[Category:Slovenský]]
 
<!-- i18n, flags -->
 
<!-- i18n, flags -->
{{i18n|cron}}
+
[[de:Cron]]
 +
[[en:Cron]]
 +
[[fr:Cron]]
 +
[[zh-CN:Cron]]
 
<!-- Overview -->
 
<!-- Overview -->
{{Article Zhrnutie start}}
+
{{Article summary start|Súhrn}}
 
{{Article summary text|Zhrnutie štandardného dameona na plánovanie úloh v GNU/Linux.}}
 
{{Article summary text|Zhrnutie štandardného dameona na plánovanie úloh v GNU/Linux.}}
 
{{Article summary heading|Zdroje}}
 
{{Article summary heading|Zdroje}}
Line 13: Line 16:
 
== Inštalácia ==
 
== Inštalácia ==
  
Existuje mnoho implementácií cron-u, ktoré sú prístupné a môžete si z nich vybrať. {{Package Official|dcron}} (Dillon's Cron) je dostupný v [core] repozitáry a je inštalovaný ako súčasť '''base''' skupiny balíčkov.
+
Existuje mnoho implementácií cron-u, ktoré sú prístupné a môžete si z nich vybrať. {{Pkg|dcron}} (Dillon's Cron) je dostupný v [core] repozitáry a je inštalovaný ako súčasť '''base''' skupiny balíčkov.
  
 
  # pacman -S dcron
 
  # pacman -S dcron
  
Poprípade si môžete nainštalovať  {{Package Official|fcron}} z [community] alebo {{Package AUR|bcron}} alebo {{Package AUR|vixie-cron}} z [[AUR]];
+
Poprípade si môžete nainštalovať  {{Pkg|fcron}} z [community] alebo {{AUR|bcron}} alebo {{AUR|vixie-cron}} z [[AUR]];
 
všetky poskytujú široký rozsah funkcií a možností konfigurácie.
 
všetky poskytujú široký rozsah funkcií a možností konfigurácie.
  
Line 31: Line 34:
 
a mali by bať schopný editácie svojich vlastných crontab-ov.
 
a mali by bať schopný editácie svojich vlastných crontab-ov.
  
Aby ste sa uistili, že cron sa bude spúšťať pri štarte systému, pridajte ''crond'' do riadku DAEMONS v {{Filename|/etc/rc.conf}}.
+
Aby ste sa uistili, že cron sa bude spúšťať pri štarte systému, pridajte ''crond'' do riadku DAEMONS v {{ic|/etc/rc.conf}}.
  
 
==== Chyby úloh ====
 
==== Chyby úloh ====
Line 39: Line 42:
 
  # pacman -S esmtp procmail
 
  # pacman -S esmtp procmail
  
Po inštalácii si vytvorte súbor {{Filename|/etc/esmtprc}} s týmto obsahom:
+
Po inštalácii si vytvorte súbor {{ic|/etc/esmtprc}} s týmto obsahom:
  
<pre>
+
{{bc|
 
  mda "/usr/bin/procmail -d %T"
 
  mda "/usr/bin/procmail -d %T"
</pre>
+
}}
  
 
Otestujte pomocou:  
 
Otestujte pomocou:  
Line 50: Line 53:
 
  $ cat /var/spool/mail/user_name
 
  $ cat /var/spool/mail/user_name
  
Všetky chybové výstupy budú presmerované do {{Filename|/var/spool/mail/$user_name}}
+
Všetky chybové výstupy budú presmerované do {{ic|/var/spool/mail/$user_name}}
Thats all! All error output of jobs now will be redirected to {{Filename|/var/spool/mail/$user_name}}
+
Thats all! All error output of jobs now will be redirected to {{ic|/var/spool/mail/$user_name}}
  
 
== Formát zápisu do crontab ==
 
== Formát zápisu do crontab ==
Line 64: Line 67:
 
* ''month'' nadobúda hodnoty od 1 do 12.
 
* ''month'' nadobúda hodnoty od 1 do 12.
 
* ''day_of_week'' nadobúda hodnoty od 0 do 6, kde 0 je nedeľa.
 
* ''day_of_week'' nadobúda hodnoty od 0 do 6, kde 0 je nedeľa.
 
  
 
Viac časom môže byť určených pomocou pomocou čiarky, rozsah (od-do) môže byť určený pomocou pomlčky a hviezdička je použitá ako zástupný znak. Medzery sa používajú na oddelenie jednotlivých polí. Napríklad
 
Viac časom môže byť určených pomocou pomocou čiarky, rozsah (od-do) môže byť určený pomocou pomlčky a hviezdička je použitá ako zástupný znak. Medzery sa používajú na oddelenie jednotlivých polí. Napríklad
Line 70: Line 72:
 
  *0,*5 9-16 * 1-5,9-12 1-5 /home/user/bin/i_love_cron.sh
 
  *0,*5 9-16 * 1-5,9-12 1-5 /home/user/bin/i_love_cron.sh
  
spustí skript {{Codeline|i_love_cron.sh}}  v 5 minútových intervaloch od 9 do 16 každý pracovný deň v mesiaci okrem letných mesiacov (Jún, Júl, August)
+
spustí skript {{ic|i_love_cron.sh}}  v 5 minútových intervaloch od 9 do 16 každý pracovný deň v mesiaci okrem letných mesiacov (Jún, Júl, August)
  
 
== Základné príkazy ==
 
== Základné príkazy ==
Line 103: Line 105:
  
 
== Príklady ==
 
== Príklady ==
 
  
 
  01 * * * * /bin/echo Hello, world!
 
  01 * * * * /bin/echo Hello, world!
spustí {{Codeline|/bin/echo Hello, world!}} vždy prvú minútu každej hodiny, každý deň a každý meisac (12:01, 13:01, 14:01 ...)
+
spustí {{ic|/bin/echo Hello, world!}} vždy prvú minútu každej hodiny, každý deň a každý meisac (12:01, 13:01, 14:01 ...)
  
 
Podobne
 
Podobne
Line 115: Line 116:
 
  *0,*5 9-16 * 1-5,9-12 1-5 /home/user/bin/i_love_cron.sh
 
  *0,*5 9-16 * 1-5,9-12 1-5 /home/user/bin/i_love_cron.sh
  
spustí skript {{Codeline|i_love_cron.sh}}  v 5 minútových intervaloch od 9 do 16 každý pracovný deň v mesiaci okrem letných mesiacov (Jún, Júl, August)
+
spustí skript {{ic|i_love_cron.sh}}  v 5 minútových intervaloch od 9 do 16 každý pracovný deň v mesiaci okrem letných mesiacov (Jún, Júl, August)
  
 
== Viac informácií==
 
== Viac informácií==
Line 122: Line 123:
 
Medzi formátmi pre crontab jednotlivých daemonov sú rozdiely. Defaul root crontab pre dcron vyzerá asi takto:
 
Medzi formátmi pre crontab jednotlivých daemonov sú rozdiely. Defaul root crontab pre dcron vyzerá asi takto:
  
{{File
+
{{hc|/var/spool/cron/root
|name=/var/spool/cron/root
+
|2=<nowiki>
|content=<nowiki>
+
 
# root crontab
 
# root crontab
 
# DO NOT EDIT THIS FILE MANUALLY! USE crontab -e INSTEAD
 
# DO NOT EDIT THIS FILE MANUALLY! USE crontab -e INSTEAD
Line 154: Line 154:
 
# command
 
# command
  
Súbory pre crontab sú zvyčajne uložené v {{Filename|/var/spool/cron/username}}. Napríklad crontab pre root nájdeme v {Filename|/var/spool/cron/root}}.
+
Súbory pre crontab sú zvyčajne uložené v {{ic|/var/spool/cron/username}}. Napríklad crontab pre root nájdeme v {{ic|/var/spool/cron/root}}.
  
Pre viac informácií si pozrite crontab [[man page]], dcron man page http://www.jimpryor.net/linux/dcron tu] a [http://bbs.archlinux.org/viewtopic.php?id=78654&p=1 tu] a príspevky na fóre.
+
Pre viac informácií si pozrite crontab [[man page]], dcron man page http://www.jimpryor.net/linux/dcron tu] a [https://bbs.archlinux.org/viewtopic.php?id=78654&p=1 tu] a príspevky na fóre.
  
 
== Beh X aplikácií==
 
== Beh X aplikácií==
Line 178: Line 178:
 
Ak ste vypli počítač, ale chcete, aby sa úloha potom spustila môžete použiť jedno z týchto riešení:
 
Ak ste vypli počítač, ale chcete, aby sa úloha potom spustila môžete použiť jedno z týchto riešení:
  
; Dcron : Vanilla dcron teraz podpuruej asynchrónne spracovanie úloh. Stačí keď vložíte @hourly, @daily, @weekly alebo @monthy s menom úlohy asi takto:
+
; Dcron : Vanilla dcron teraz podporuej asynchrónne spracovanie úloh. Stačí keď vložíte @hourly, @daily, @weekly alebo @monthy s menom úlohy asi takto:
  
 
  @hourly        ID=greatest_ever_job      echo This job is very usefull.
 
  @hourly        ID=greatest_ever_job      echo This job is very usefull.
  
; Cronwhip ([http://aur.archlinux.org/packages.php?ID=21079 AUR], [https://bbs.archlinux.org/viewtopic.php?id=57973 fórum]): Skript na automatické spustenie zmeškaných úloh cronu, pracuje s default dcron-om.
+
; Cronwhip ([https://aur.archlinux.org/packages.php?ID=21079 AUR], [https://bbs.archlinux.org/viewtopic.php?id=57973 fórum]): Skript na automatické spustenie zmeškaných úloh cronu, pracuje s default dcron-om.
; Anacron ([http://aur.archlinux.org/packages.php?ID=5196 AUR]): Plná náhrada za dcron, úlohy spracováva asynchrónne.
+
; Anacron ([https://aur.archlinux.org/packages.php?ID=5196 AUR]): Plná náhrada za dcron, úlohy spracováva asynchrónne.

Revision as of 15:50, 4 December 2012

Súhrn help replacing me
Zhrnutie štandardného dameona na plánovanie úloh v GNU/Linux.
Zdroje
Gentoo Linux Cron Guide

Cron je plánovač úloh pre GNU/Linux a mnoho iných operačných systémov. Umožňuje automaticky opakovať úlohy spúšťaním daných príkazov v daný čas. Môže byť využitý pre široký rozsah aplikácii, od jednoduchých opakujúcich sa úloh až po zálohy systému.

Inštalácia

Existuje mnoho implementácií cron-u, ktoré sú prístupné a môžete si z nich vybrať. dcron (Dillon's Cron) je dostupný v [core] repozitáry a je inštalovaný ako súčasť base skupiny balíčkov.

# pacman -S dcron

Poprípade si môžete nainštalovať fcron z [community] alebo bcronAUR alebo vixie-cronAUR z AUR; všetky poskytujú široký rozsah funkcií a možností konfigurácie.

Na Gentoo Linux Cron Guide nájdete viacej porovnaní medzi spomenutými implementáciami.

Úvodná konfigurácia

Používatelia a autoštart

Cron môže pre väčšinu užívateľov pracovať "out-of-box". Ak chcete používať crontab, používatelia musia byť členom určenej skupiny, ale v Arch-u je táto skupina users, ktorej členom by mali byť všetci používatelia. Ak by z nejakých dôvodov užívatelia neboli členmi danej skupiny, môžeme ich pridať nasledujúcim príkazom:

# gpasswd -a username users

a mali by bať schopný editácie svojich vlastných crontab-ov.

Aby ste sa uistili, že cron sa bude spúšťať pri štarte systému, pridajte crond do riadku DAEMONS v /etc/rc.conf.

Chyby úloh

Počas spúšťania daných úloh sa môžu vyskytnúť chyby. Keď sa to stane, cron zaregistruje stderr výstup úlohy a znaží sa ho poslať defaultne cez sendmail. Na log-ovanie týchto správ môžete použiť prepínač -M pre cornd a napísať si svoj vlastný skript alebo nainštalovať základný SMTP subsystém

# pacman -S esmtp procmail

Po inštalácii si vytvorte súbor /etc/esmtprc s týmto obsahom:

 mda "/usr/bin/procmail -d %T"

Otestujte pomocou:

$ sendmail user_name < message.txt
$ cat /var/spool/mail/user_name

Všetky chybové výstupy budú presmerované do /var/spool/mail/$user_name Thats all! All error output of jobs now will be redirected to /var/spool/mail/$user_name

Formát zápisu do crontab

Základný formát je:

<minute> <hour> <day_of_month> <month> <day_of_week> <command>
  • minute nadobúda hodnoty od 0 do 59.
  • hour nadobúda hodnoty od 0 do 23.
  • day_of_month nadpbúda hodnoty od 1 do 31.
  • month nadobúda hodnoty od 1 do 12.
  • day_of_week nadobúda hodnoty od 0 do 6, kde 0 je nedeľa.

Viac časom môže byť určených pomocou pomocou čiarky, rozsah (od-do) môže byť určený pomocou pomlčky a hviezdička je použitá ako zástupný znak. Medzery sa používajú na oddelenie jednotlivých polí. Napríklad

*0,*5 9-16 * 1-5,9-12 1-5 /home/user/bin/i_love_cron.sh

spustí skript i_love_cron.sh v 5 minútových intervaloch od 9 do 16 každý pracovný deň v mesiaci okrem letných mesiacov (Jún, Júl, August)

Základné príkazy

Crontab nemôže byť nikdy editovaný priamo. Používatelia by mali použiť program crontab na prácu s ich crontabmi.

Na zobrazenie crontab-ov, môžete použiť:

$ crontab -l

Na editovanie:

$ crontab -e

Na zmazanie:

$ crontab -d

Ak máte uložený crontab a chcete si prepísať svoj starý crontab:

$ crontab uložený_crontab

na prepísanie crontab-u z príkazového riadku (Wikipedia:stdin):

$ crontab - 

Na editovanie cudzieho crontab-u, spustite ako root:

# crontab -u username -e

Tento formát funguje aj na mazanie a pridávanie crontabov.

Príklady

01 * * * * /bin/echo Hello, world!

spustí /bin/echo Hello, world! vždy prvú minútu každej hodiny, každý deň a každý meisac (12:01, 13:01, 14:01 ...)

Podobne

*/5 * * jan mon-fri /bin/echo Hello, world!

spustí ten istý príkaz každých 5 minút každý pracovný deň v Januári (12:00, 12:05, 12:10 ...)

*0,*5 9-16 * 1-5,9-12 1-5 /home/user/bin/i_love_cron.sh

spustí skript i_love_cron.sh v 5 minútových intervaloch od 9 do 16 každý pracovný deň v mesiaci okrem letných mesiacov (Jún, Júl, August)

Viac informácií

Cron daemon využíva konfiguračný súbor známy ako crontab. Každý používateľ v systéme môže používať oddelený crontab na plánovanie svojich individuálnych úloh. ROOT-ov crontab je používaný na plánovanie úloh system-wide.

Medzi formátmi pre crontab jednotlivých daemonov sú rozdiely. Defaul root crontab pre dcron vyzerá asi takto:

/var/spool/cron/root
# root crontab
# DO NOT EDIT THIS FILE MANUALLY! USE crontab -e INSTEAD

# man 1 crontab for acceptable formats:
#    <minute> <hour> <day> <month> <dow> <tags and command>
#    <@freq> <tags and command>

# SYSTEM DAILY/WEEKLY/... FOLDERS
@hourly         ID=sys-hourly   /usr/sbin/run-cron /etc/cron.hourly
@daily          ID=sys-daily    /usr/sbin/run-cron /etc/cron.daily
@weekly         ID=sys-weekly   /usr/sbin/run-cron /etc/cron.weekly
@monthly        ID=sys-monthly  /usr/sbin/run-cron /etc/cron.monthly

Tieto riadky vysvetľujú jeden z možných formátov crontabu, kde:

  1. @perióda
  2. ID=meno úlohy
  3. príkaz

Ďaľším štandartným formátom je:

  1. minute
  2. hour
  3. day
  4. month
  5. day of week
  6. command

Súbory pre crontab sú zvyčajne uložené v /var/spool/cron/username. Napríklad crontab pre root nájdeme v /var/spool/cron/root.

Pre viac informácií si pozrite crontab man page, dcron man page http://www.jimpryor.net/linux/dcron tu] a tu a príspevky na fóre.

Beh X aplikácií

Ak by ste chceli spustiť X aplikáciu pomocou cronu, tak pred príkaz vložte:

export DISPLAY=:0.0 ;

To nastaví premennú DISPLAY na prvý displej, čo je zvyčajne správne, pokiaľ Vám nebeží viac xserverov.

Ak to stále nejde, potom potrebujete použiť xhost aby ste získali kontrolu nad X11:

# xhost +si:localuser:$(whoami)

Môžete si daný príkaz pridať do ponuky Aplikácie spúšťané pri štarte ako:

bash -c "xhost +si:localuser:$(whoami)"

Asynchrónne spracovanie úloh

Ak ste vypli počítač, ale chcete, aby sa úloha potom spustila môžete použiť jedno z týchto riešení:

Dcron 
Vanilla dcron teraz podporuej asynchrónne spracovanie úloh. Stačí keď vložíte @hourly, @daily, @weekly alebo @monthy s menom úlohy asi takto:
@hourly         ID=greatest_ever_job      echo This job is very usefull.
Cronwhip (AUR, fórum)
Skript na automatické spustenie zmeškaných úloh cronu, pracuje s default dcron-om.
Anacron (AUR)
Plná náhrada za dcron, úlohy spracováva asynchrónne.