Cron je plánovač úloh založený na čase, je nakonfigurován tak, aby spouštěl příkazy v daných časech nebo intervalech. Každý uživatel má tabulku cron, která definuje, co se má spustit a v jakém intervalu. crontab příkaz se používá k vytváření, úpravě a prohlížení úloh cron.
Konfigurační soubory a adresáře
– Cron je řízen sadou souborů zvaných crontabs.
– Hlavní soubor je v /etc/crontab , spolu se soubory crontab pro uživatele v /var/spool/cron/ . V druhém adresáři mají soubory stejné jméno jako uživatelské jméno uživatele.
– Soubor /etc/crontab automaticky spouští položky v několika podadresářích v pravidelných intervalech. Skripty jsou umístěny v různých adresářích – /etc/cron.* probíhají podle níže uvedeného časového intervalu. Všechny skripty v těchto adresářích jsou spouštěny s oprávněním root.
Adresář | Čas |
---|---|
/etc/cron.hourly | První minuta každé hodiny |
/etc/cron.daily | Každý den od 3:05 do 22:55 |
/etc/cron.weekly | Mezi 3:25 a 23:10 po 7 dnech od posledního spuštění |
/etc/cron.monthly | Mezi 3:45 a 23:30 po měsíci od posledního spuštění |
– Vše, co sysadmin musí udělat, je umístit skript shellu nebo odkaz na spustitelný soubor do jednoho z adresářů a ten se automaticky spustí ve vhodnou dobu.
syntaxe crontab
Nastavení crontab na uživatelské úrovni je poněkud odlišné. Soubory ve /var/spool/cron se přímo neupravují. Místo toho se k jejich manipulaci používá program zvaný crontab. Syntaxe příkazu crontab je :
Usage: crontab [options] file crontab [options] crontab -n [hostname] Options: -u [user] define user -e edit user's crontab -l list user's crontab -r delete user's crontab -i prompt before deleting -n [host] set host in cluster to run users' crontabs -c get host in cluster to run users' crontabs -s selinux context -x [mask] enable debugging
Jak upravit crontab
Nejlepší způsob, jak upravit crontab, je pomocí příkazu crontab -e . Další způsob, jak to udělat, je:
1. su to the user whose cron you want to change 2. crontab -l > file [ copy the crontab to a file ]. 3. vi file [ make changes to the file as per your need ] 4. crontab file [ this makes the "file" as new crontab ]
Poté již není potřeba restartovat cron démona.
Interpretace polí času a data
Každý příkaz cron má 5 polí pro čas a datum, za nimiž následuje uživatelské jméno [volitelné], a pokud se jedná o systémový soubor crontab, bude následovat příkaz. Příkazy se provádějí, když se čas zadaný v polích čas/datum shoduje s aktuálním časem.
field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 0-31 month 0-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names)
Pole může být hvězdička (*), která vždy znamená od prvního do posledního . Takže při použití v poli měsíc to znamená každý měsíc od 0 (ledna) do 12 (prosinec).
Příklad úlohy Cron:
# Example of job definition: .---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat | | | | | 0 1 * * * [user-name] [command to be executed]
Příklady nastavení úloh cron
Níže je uvedeno několik příkladů použití crontab, abyste pochopili, jak naplánovat úlohu:
Příklad: spuštění úlohy pět minut po půlnoci každý den:
5 0 * * * /home/oracle/scan_asm_devices.sh
Příklad: spuštění úlohy v 17:30 každého 1. dne v měsíci:
30 17 1 * * mail -s "It's 5:30pm"
Příklad: Spuštění zakázky každé pondělí ve 4:05.
5 4 * * mon echo "run at 5 after 4 every monday"
Řízení přístupu uživatelů
– Chcete-li uživatelům umožnit přístup k crontabs, lze k povolení nebo zamítnutí přístupu použít soubory /etc/cron.allow a /etc/cron.deny. Jednoduše vložte jedno uživatelské jméno do jednoho ze 2 souborů, abyste povolili nebo odepřeli přístup k crontab.
– Pokud soubor /etc/cron.allow existuje, soubor /etc/cron.deny nebude použit.
– Ve výchozí instalaci bude existovat pouze prázdný soubor /etc/cron.deny.
– Pokud žádný ze souborů neexistuje, přístup k plánování úlohy prostřednictvím cronu bude mít pouze uživatel root.