|
Lucaine vydal pred chvíľou vynikajúci návod na cron a crontab o ktorom si myslím, že stojí za zdieľanie. Cron je akýmsi ekvivalentom Naplánovaných úloh vo Windows, iba to, že sa vybavuje z terminálu. Tí, ktorí uprednostňujú vizuálne rozhranie na dosiahnutie rovnakého cieľa, sa o tom môžu presvedčiť ďalší článok. |
Čo je to cron?
Názov cron pochádza z gréckeho chronos, čo znamená „čas“. V operačnom systéme Unix je cron bežným správcom procesov na pozadí (daemon), ktorý spúšťa procesy alebo skripty v pravidelných intervaloch (napríklad každú minútu, deň, týždeň alebo mesiac). Procesy, ktoré sa majú spustiť, a čas, ktorý by sa mali spustiť, sú uvedené v súbore crontab.
Ako to funguje
Démon cron začína od /etc/rc.d/ o /etc/init.d v závislosti od distribúcie. Cron beží na pozadí a každú minútu kontroluje tabuľku úloh crontab / Etc / crontab v / var / cievka / cron pri hľadaní úloh, ktoré sa majú splniť. Ako užívateľ môžeme do cron pridávať príkazy alebo skripty s úlohami na automatizáciu niektorých procesov. To je užitočné napríklad na automatizáciu aktualizácie systému alebo dobrého zálohovacieho systému.
Čo je Crontab?
Crontab je jednoduchý textový súbor, ktorý obsahuje zoznam príkazov, ktoré sa majú vykonať v čase určenom používateľom. Crontab overí dátum a čas vykonania skriptu alebo príkazu, povolenia na vykonávanie a urobí to na pozadí. Každý používateľ môže mať svoj vlastný súbor crontab, v skutočnosti súbor / Etc / crontab predpokladá sa, že ide o súbor crontab používateľa root, keď bežní používatelia (a dokonca aj root) chcú vygenerovať svoj vlastný súbor crontab, použijeme príkaz crontab.
Crontab je najjednoduchší spôsob správy úloh cron na systémoch viacerých používateľov, a to buď ako jednoduchý užívateľ systému, alebo ako root.
Používanie crontabu
Začíname s jednoduchým príkladom.
Chystáme sa automatizovať aktualizáciu systému, aby sme odstránili nepríjemné „Vždy musím aktualizovať a to sa mi nepáči!
Najskôr urobíme scenár. Tento skript sa bude volať cron a bude obsahovať všetky pokyny, ktoré chceme urobiť, preto je potrebné ho pred zahrnutím do cron vyskúšať v niekoľkých prípadoch a niekoľkými spôsobmi, napríklad takto:
#! / bin / bash # príklad aktualizácie skriptu # vyberte svoju distribúciu # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Odstráňte # z vašej distribučnej linky. V prípade, že ide o Ubuntu / Debian, začína sa na apt-get.
Ukladáme skript ako update.sh (napr. Adresár skriptov domov). Povolenia na spustenie uvedeného skriptu meníme pomocou:
chmod a + x ~ / scripts / update.sh
Skript spustíme niekoľkokrát, aby sme si overili, že všetko beží hladko, upravujeme, čo je potrebné (nesmie obsahovať chyby, inak cron chybu opakuje iba znova a znova). Teraz pridajte úlohu do našej tabuľky.
Pridajte úlohy na crontab
Vydanie crontabu vykonáme pomocou crontab -e, v niektorých distrách (napríklad ubuntu) nám dáva možnosť zvoliť si požadovaný textový editor, zvyšok nám ostane na vi. Súbor crontab bude vyzerať asi takto.
# mh dom mon dow príkaz používateľa
kde:
- m zodpovedá minúte, kedy bude skript vykonaný, hodnota sa pohybuje od 0 do 59
- h presný čas, spracováva sa 24-hodinový formát, hodnoty sa pohybujú od 0 do 23, pričom 0 je o 12:00 polnoci.
- dom označuje deň v mesiaci, napríklad môžete určiť 15, ak chcete spustiť každých 15 dní
- dow znamená deň v týždni, môže to byť číselný údaj (0 až 7, kde 0 a 7 sú nedele) alebo prvé 3 písmená dňa v angličtine: po, ut, st, štv, pia, sat, slnko.
- užívateľ definuje používateľa, ktorý vykoná príkaz, môže to byť root alebo iný používateľ, pokiaľ má oprávnenie na vykonávanie skriptu.
- povel odkazuje na príkaz alebo absolútnu cestu k skriptu, ktorý sa má vykonať, napríklad: /home/usuario/scripts/update.sh, ak volá skript, musí byť spustiteľný
Aby bolo jasné, vysvetlíme niekoľko príkladov úloh cron:
15 10 * * * užívateľ /home/user/scripts/update.sh
Skript update.sh bude spustený každý deň o 10:15
15 22 * * * užívateľ /home/user/scripts/update.sh
Skript update.sh bude spustený každý deň o 10:15
00 10 * * 0 root apt-get -y update Užívateľ root
Aktualizáciu spustí každú nedeľu o 10:00
45 10 * * aktualizácia slnečných koreňov apt-get -y
Používateľ root bude aktualizáciu spúšťať každú nedeľu (ne) o 10:45
30 7 20 11 * užívateľ /home/usuario/scripts/update.sh
20. novembra o 7:30 používateľ spustí skript
30 7 11 11 používateľ slnka /home/usuario/scripts/pastel_con_velitas.sh
11. novembra o 7:30 a to je nedeľa, používateľ oslávi svojho sysadmina (teda mňa)
01 * * * * užívateľ /home/usuario/scripts/molestorecordatorio.sh
Nepríjemné pripomenutie každú minútu každú hodinu každý deň (NIE sa odporúča).
Stále sa s nimi dá manipulovať špeciálne rozsahy:
30 17 * * 1,2,3,4,5
O 5:30 popoludní každý deň od pondelka do piatku.
00 12 1,15,28 * *
Každý prvý, pätnásty a 12. deň v 28 hodín o poludní (ideálne pre mzdy)
Ak je to mätúce, manipuluje sa s crontabom špeciálne reťazce na definovanie týchto rozsahov.
@ reboot Spustiť raz, pri štarte
@rok beží iba raz ročne: 0 0 1 1 *
@ ročne rovnaké ako @ rok
@mesačník beží raz mesačne, prvý deň: 0 0 1 * *
@týždenne prvá minúta prvej hodiny v týždni. 0 0 * * 0 ″.
@ denne každý deň, o 12:00 0 0 * * *
@ polnoc rovnaké ako @ denne
@hodina v prvej minúte každej hodiny: 0 * * * *
Jeho použitie je veľmi jednoduché.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @ denný root apt-get update && apt-get -y upgrade
V neposlednom rade:
Správa úloh Cron
súbor crontab
Nahraďte existujúci súbor crontab súborom definovaným používateľom
crontab -e
Upravte súbor crontab používateľa, každý nový riadok bude novou úlohou crontab.
crontab -l
Uveďte zoznam všetkých úloh používateľa na krontabe
crontab -d
Odstráňte používateľskú kartu
crontab -c r
Definuje adresár používateľa crontab (musí mať oprávnenie používateľa na zápis a vykonávanie)
crontab -u užívateľ
predpona na spracovanie karty iného používateľa, príklady:
$ sudo crontab -l -u root $ sudo crontab -e užívateľ2 #crontab -d -u užívateľ
Tento nástroj, rovnako ako mnoho iných, je možné vidieť podrobnejšie a podrobnejšie v: