Difference between revisions of "Cron (Slovenský)"

From ArchWiki
Jump to: navigation, search
(Created page with "Category:Slovenský <!-- i18n, flags --> <!-- {{i18n|cron}} (hide i18n until at least 1 translation exists --> <!-- Overview --> {{Article summary start}} {{Article summary t...")
 
(synchronized interlanguage links with the other wikis)
(14 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
[[Category:Slovenský]]
 
[[Category:Slovenský]]
 
<!-- i18n, flags -->
 
<!-- i18n, flags -->
<!-- {{i18n|cron}} (hide i18n until at least 1 translation exists -->
+
[[de:Cron]]
 +
[[en:Cron]]
 +
[[fr:Cron]]
 +
[[ja:Cron]]
 +
[[ko: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 18:
 
== 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 36:
 
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 40: Line 44:
 
  # 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 51: Line 55:
 
  $ 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 66: Line 70:
 
* ''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
Multiple times may be specified with a comma, a range can be given with a hyphen, and the asterisk symbol is a wildcard character. Spaces are used to separate fields. For example, the line:
+
  
 
  *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
  
Will execute the script {{Codeline|i_love_cron.sh}} at five minute intervals from 9 AM to 4:55 PM every weekday of the month except during the summer months (June, July, and August). More examples and advanced configuration techniques can be found below.
+
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)
  
==Basic commands==
+
== Základné príkazy ==
  
Crontabs should never be edited directly; instead, users should use the ''crontab'' program to work with their crontabs.
+
Crontab nemôže byť nikdy editovaný priamo. Používatelia by mali použiť program ''crontab'' na prácu s ich crontabmi.
  
To view their crontabs, users should issue the command:
+
Na zobrazenie crontab-ov, môžete použiť:
  
 
  $ crontab -l
 
  $ crontab -l
  
To edit their crontabs, they may use:
+
Na editovanie:
  
 
  $ crontab -e
 
  $ crontab -e
  
To remove their crontabs, they should use:
+
Na zmazanie:
  
 
  $ crontab -d
 
  $ crontab -d
  
If a user has a saved crontab and would like to completely overwrite their old crontab, he or she should use:
+
Ak máte uložený crontab a chcete si prepísať svoj starý crontab:
  
  $ crontab ''saved_crontab_filename''
+
  $ crontab ''uložený_crontab''
  
To overwrite a crontab from the command line ([[Wikipedia:stdin]]), use
+
na prepísanie crontab-u z príkazového riadku ([[Wikipedia:stdin]]):
  
 
  $ crontab -  
 
  $ crontab -  
  
To edit somebody else's crontab, issue the following command as root:
+
Na editovanie cudzieho crontab-u, spustite ako root:
  
 
  # crontab -u ''username'' -e
 
  # crontab -u ''username'' -e
  
This same format (appending "-u ''username''" to a command) works for listing and deleting crontabs as well.
+
Tento formát funguje aj na mazanie a pridávanie crontabov.  
  
==Examples==
+
== Príklady ==
 
+
The entry:
+
  
 
  01 * * * * /bin/echo Hello, world!
 
  01 * * * * /bin/echo Hello, world!
 +
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 ...)
  
runs the command {{Codeline|/bin/echo Hello, world!}} on the first minute of every hour of every day of every month (i.e. at 12:01, 1:01, 2:01, etc.)
+
Podobne
 
+
Similarly,
+
  
 
  */5 * * jan mon-fri /bin/echo Hello, world!
 
  */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 ...)
runs the same job every five minutes on weekdays during the month of January (i.e. at 12:00, 12:05, 12:10, etc.)
+
 
+
As noted in the ''Crontab Format'' section, the line:
+
  
 
  *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
  
Will execute the script {{Codeline|i_love_cron.sh}} at five minute intervals from 9 AM to 5 PM (excluding 5 PM itself) every weekday (Mon-Fri) of every month except during the summer (June, July, and 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)
  
==More information==
+
== 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''.
  
The cron daemon parses a configuration file known as ''crontab''. Each user on the system can maintain a separate crontab file to schedule commands individually. The root user's crontab is used to schedule system-wide tasks (though users may opt to use {{Filename|/etc/crontab}} or the {{Filename|/etc/cron.d}} directory, depending on which cron implementation they choose).
+
Medzi formátmi pre crontab jednotlivých daemonov sú rozdiely. Defaul root crontab pre dcron vyzerá asi takto:
  
There are slight differences between the crontab formats of the different cron daemons. The default root crontab for dcron looks like this:
+
{{hc|/var/spool/cron/root
 
+
|2=<nowiki>
{{File
+
|name=/var/spool/cron/root
+
|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 146: Line 141:
 
</nowiki>}}
 
</nowiki>}}
  
These lines exemplify one of the formats that crontab entries can have, namely whitespace-separated fields specifying:
+
Tieto riadky vysvetľujú jeden z možných formátov crontabu, kde:
  
# @period
+
# @perióda
# ID=jobname (this tag is specific to dcron)
+
# ID=meno úlohy
# command
+
# príkaz
  
The other standard format for crontab entries is:
+
Ďaľším štandartným formátom je:
  
 
# minute
 
# minute
Line 161: Line 156:
 
# command
 
# command
  
The crontab files themselves are usually stored as {{Filename|/var/spool/cron/username}}. For example, root's crontab is found at {{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}}.
  
See the crontab [[man page]] for further information and configuration examples, dcron's manpages are available [http://www.jimpryor.net/linux/dcron here] and  [http://bbs.archlinux.org/viewtopic.php?id=78654&p=1 this] (note: yacron removed from repos?) forum post has lots of info.  
+
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.
  
==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 15:49, 23 February 2014

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.