Difference between revisions of "Cron (Slovenský)"

From ArchWiki
Jump to: navigation, search
(rm temporary i18n template)
(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 summary start}}
+
{{Article summary start|Súhrn}}
{{Article summary text|An overview of the standard task scheduling daemon on GNU/Linux systems.}}
+
{{Article summary text|Zhrnutie štandardného dameona na plánovanie úloh v GNU/Linux.}}
{{Article summary heading|Resources}}
+
{{Article summary heading|Zdroje}}
 
{{Article summary link|Gentoo Linux Cron Guide|http://www.gentoo.org/doc/en/cron-guide.xml}}
 
{{Article summary link|Gentoo Linux Cron Guide|http://www.gentoo.org/doc/en/cron-guide.xml}}
 
{{Article summary end}}
 
{{Article summary end}}
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 here] and  [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 [http://bbs.archlinux.org/viewtopic.php?id=78654&p=1 tu] a príspevky na fóre.
  
==Running X apps==
+
== Beh X aplikácií==
  
If you find that you can't run X apps from cron jobs then put this before the
+
Ak by ste chceli spustiť X aplikáciu pomocou cronu, tak pred príkaz vložte:
command:
 
  
 
  export DISPLAY=:0.0 ;
 
  export DISPLAY=:0.0 ;
  
That sets the DISPLAY variable to the first display; which is usually right
+
To nastaví premennú DISPLAY na prvý displej, čo je zvyčajne správne, pokiaľ Vám nebeží viac xserverov.
unless you like to run multiple xservers on your machine.
 
  
If it still doesn't work then you need to use xhost to give your user control
+
Ak to stále nejde, potom potrebujete použiť xhost aby ste získali kontrolu nad X11:
over X11:
 
  
 
  # xhost +si:localuser:$(whoami)
 
  # xhost +si:localuser:$(whoami)
  
I put it in my gnome `Startup Applications' like this:
+
Môžete si daný príkaz pridať do ponuky ''Aplikácie spúšťané pri štarte'' ako:
  
 
  bash -c "xhost +si:localuser:$(whoami)"
 
  bash -c "xhost +si:localuser:$(whoami)"
  
==Asynchronous job processing==
+
==Asynchrónne spracovanie úloh==
  
If you regularly turn off your computer but don't want to miss jobs, there are some solutions available (easiest to hardest):
+
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 (the default cron daemon in Arch) now supports asynchronous job processing. Just put it with @hourly, @daily, @weekly or @monthy with a jobname, like this:
+
; 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 forum thread]): Script to automatically run missed cron's jobs; works with the default cron implementation, dcron.
+
; 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]): Full replacement for dcron, processes jobs asynchronously.
+
; Anacron ([https://aur.archlinux.org/packages.php?ID=5196 AUR]): Plná náhrada za dcron, úlohy spracováva asynchrónne.

Revision as of 09:55, 15 June 2012

zh-CN:Cron Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary link Template:Article summary end

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.