|
Lucaine zveřejněna před chvílí vynikající návod na cron a crontab o kterém si myslím, že stojí za sdílení. Cron je druh ekvivalentu naplánovaných úkolů ve Windows, pouze to, že je zpracováváno z terminálu. Ti, kteří dávají přednost vizuálnímu rozhraní k dosažení stejného cíle, to mohou vidět další položka. |
Co je to cron?
Název cron pochází z řeckého chronos, což znamená „čas“. V operačním systému Unix je cron běžným správcem procesů na pozadí (daemon), který spouští procesy nebo skripty v pravidelných intervalech (například každou minutu, den, týden nebo měsíc). Procesy, které musí být provedeny, a čas, kdy musí být provedeny, jsou uvedeny v souboru crontab.
COMO práce
Démon cron začíná od /etc/rc.d/ o /etc/init.d v závislosti na distribuci. Cron běží na pozadí a každou minutu kontroluje tabulku úloh crontab / etc / crontab nebo v / var / cívka / cron při hledání úkolů, které mají být splněny. Jako uživatel můžeme do cronu přidávat příkazy nebo skripty s úkoly k automatizaci některých procesů. To je užitečné například k automatizaci aktualizace systému nebo dobrého zálohovacího systému.
Co je Crontab?
Crontab je jednoduchý textový soubor, který ukládá seznam příkazů, které mají být provedeny v době určené uživatelem. Crontab ověří datum a čas, kdy by měl být skript nebo příkaz proveden, oprávnění ke spuštění a provede to na pozadí. Každý uživatel může mít svůj vlastní soubor crontab, ve skutečnosti soubor / etc / crontab předpokládá se, že jde o soubor crontab uživatele root, když běžní uživatelé (a dokonce i root) chtějí vygenerovat vlastní soubor crontab, použijeme příkaz crontab.
Crontab je nejjednodušší způsob správy úloh cron na víceuživatelských systémech, ať už jako jednoduchý uživatel systému nebo root.
Používání crontabu
Začínáme s jednoduchým příkladem.
Chystáme se automatizovat aktualizaci systému, abychom odstranili nepříjemné „Vždy musím aktualizovat a to se mi nelíbí!“
Nejprve vytvoříme scénář. Tento skript bude volán cronem a bude obsahovat všechny pokyny, které od něj chceme udělat, proto je nutné jej v několika případech a několika způsoby otestovat, než jej do cronu zahrnete, jednoduchý aktualizační skript, jako je tento:
#! / bin / bash # příklad aktualizace skriptu # vyberte svou distribuci # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Odstraňte # z vaší distribuční linky. V případě, že jde o Ubuntu / Debian, začíná apt-get.
Skript uložíme jako update.sh (např. Adresář skriptů doma). Oprávnění ke spuštění uvedeného skriptu změníme pomocí:
chmod a + x ~ / scripts / update.sh
Skript provedeme několikrát, abychom ověřili, že vše běží hladce, upravíme, co je nutné (nesmí obsahovat chyby, jinak cron chybu opakuje pouze znovu a znovu). Nyní přidejte úkol do naší crontabu.
Přidejte úkoly na crontab
Vydání crontabu provádíme s crontab -e, v některých distribucích (jako je Ubuntu) nám dává možnost zvolit si požadovaný textový editor, zbytek nám zůstane vi. Soubor crontab bude vypadat asi takto.
# mh dom mon dow uživatelský příkaz
kde:
- m odpovídá minutě, kdy bude skript spuštěn, hodnota se pohybuje od 0 do 59
- h přesný čas je zpracován 24hodinový formát, hodnoty se pohybují od 0 do 23, přičemž 0 je půlnoc 12:00.
- dom odkazuje na den v měsíci, například můžete zadat 15, pokud chcete spustit každých 15 dní
- dow znamená den v týdnu, může to být číslice (0 až 7, kde 0 a 7 jsou neděle) nebo první 3 písmena dne v angličtině: po, út, st, čt, pá, so, slunce.
- uživatel definuje uživatele, který provede příkaz, může to být root nebo jiný uživatel, pokud má oprávnění k provádění skriptu.
- příkaz odkazuje na příkaz nebo absolutní cestu ke skriptu, který má být proveden, příklad: /home/usuario/scripts/update.sh, pokud volá skript, musí být spustitelný
Aby bylo jasné, vysvětlíme několik příkladů úkolů cron:
15 10 * * * uživatel /home/user/scripts/update.sh
Spustí skript update.sh každý den v 10:15
15 22 * * * uživatel /home/user/scripts/update.sh
Spustí skript update.sh každý den v 10:15
00 10 * * 0 root apt-get -y update Kořenový uživatel
Aktualizaci spustí každou neděli v 10:00
45 10 * * aktualizace Sun root apt-get -y
Kořenový uživatel spustí aktualizaci každou neděli (ne) v 10:45
30 7 20 11 * uživatel /home/usuario/scripts/update.sh
20. listopadu v 7:30 spustí uživatel skript
30 7 11 11 uživatel slunce /home/usuario/scripts/pastel_con_velitas.sh
11. listopadu v 7:30 a to je neděle, bude uživatel oslavovat svého sysadmina (tedy mě)
01 * * * * uživatel /home/usuario/scripts/molestorecordatorio.sh
Nepríjemné připomenutí každou minutu každou hodinu každý den (NENÍ doporučeno).
Stále se s nimi dá manipulovat speciální rozsahy:
30 17 * * 1,2,3,4,5
V 5:30 odpoledne každý den od pondělí do pátku.
00 12 1,15,28 * *
V 12 hodin každý první, patnáctý a 28. každý měsíc (ideální pro výplatu)
Pokud je to matoucí, zpracovává to crontab speciální řetězce k definování těchto rozsahů.
@reboot Spustit jednou, při spuštění
@rok běží pouze jednou za rok: 0 0 1 1 *
@ ročně stejné jako @rok
@měsíčně běží jednou za měsíc, první den: 0 0 1 * *
@týden týdně první minuta první hodiny týdne. 0 0 * * 0 ″.
@ denně každý den, ve 12:00 0 0 * * *
@ půlnoc stejné jako @ denně
@hodina v první minutě každé hodiny: 0 * * * *
Jeho použití je velmi jednoduché.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade
V neposlední řadě:
Správa úloh Cron
soubor crontab
Nahraďte existující soubor crontab souborem definovaným uživatelem
crontab -e
Upravte soubor crontab uživatele, každý nový řádek bude novým úkolem crontab.
crontab -l
Seznam všech úkolů uživatele crontab
crontab -d
Odstraňte uživatelskou crontab
crontab -c dir
Definuje adresář uživatele crontab (musí mít oprávnění pro zápis a spuštění uživatele)
crontab -u uživatel
předpona pro zpracování crontabu jiného uživatele, příklady:
$ sudo crontab -l -u root $ sudo crontab -e uživatel2 #crontab -d -u uživatel
Tento nástroj, stejně jako mnoho dalších, lze vidět hlouběji a podrobněji v: