http://www.root.cz/clanky/triky-pro-zacatecniky-7/?SID=EBC0E7311CC9240C8499028BBB2B0980
7
Cron i at mají podobný účel: neinteraktivní
spouštění příkazů.
Zatímco at je vhodný pro jednorázové akce,
cron je určen pro periodické
akce. Oba pro svou činnost potřebují démona, který
běží na pozadí.
Příkaz ps fax | grep "\(atd \| crond\)" | grep -v grep
vám zjistí, zda
jsou tito démoni spuštěni. Pokud ne, budete je muset spustit:
/etc/rc.d/init.d/crond start a /etc/rc.d/init.d/atd start (platí
pro
RedHat & co.).
Začněme příkazem at. Jeho parametrem je čas, kdy se má později určený příkaz vykonat. Formát je docela benevolentní a vaší fantazii se meze nekladou. Viz následující příkazy: at noon (v poledne), at 14:30 + 3 days (za tři dny o půl třetí odpoledne), at now + 10 minutes (za deset minut), at 3 AM tomorrow (zítra ve tři ráno) nebo at 0:0 1/1/01, které spustí příkaz na Nový rok.
Pokud jste parametrem -f neurčili soubor, ze kterého má at přečíst příkazy, objeví se výzva at> a musíte tyto příkazy zadat na standardním vstupu. Nic těžkého, prostě je napíšete, jako byste byli v shellu a až skončíte, stisknete jako obvykle Ctrl-d. Ovšem pozor, používejte pouze příkazy, které nevyžadují interaktivní ovládání. Vhodným příkladem jsou shellovské skripty, wget či lynx --dump. Výstup z příkazu bude zachycen a odeslán na váš místní email. Osobně tento příkaz používám pro stahování velkých souborů v noci či o víkendech, možností je ale nekonečně mnoho. Zkuste se podělit o vaše použití v diskusi. Více informací najdete v manuálových stránkách příkazů at, atq, atrm a batch.
Dobrou pomůckou každého administrátora je cron.
Díky němu si můžete
zautomatizovat mnoho činností, například kontrolu
integrity databáze,
zálohování, promazání
adresáře /tmp či kontrolu, zda nemáte na serveru
škodnou. Použití cronu je poměrně jednoduché.
Příkazem crontab -e
začnete editovat své nastavení v přednastaveném
textovém editoru.
Nováčci asi zažijí šok, protože tímto editorem je
obvykle vi. Proto je
dobré v souboru .bash_profile nastavit proměnnou EDITOR
na něco, co umíte ovládat.
Například pico, joe a podobně. Uděláte to takto:
EDITOR=pico
export EDITOR
a restartujete shell.
Spusťte tedy crontab -e. Pravděpodobně uvidíte
prázdný soubor. Takže
jej začněme plnit. Každý příkaz pro cron má pevnou
strukturu a dá se
rozdělit do šesti sloupců. První sloupec určuje minutu(y), kdy
se má
příkaz vykonat. Druhý hodiny, třetí dny,
čtvrtý měsíce a pátý den v
týdnu. Zbytek řádků určuje příkaz, který se
má vykonat. Každý sloupeček
je od sebe oddělen nejméně jednou mezerou. Hodnotou sloupečku je
číslo,
rozsah čísel, seznam čísel či hvězdička, která
zastupuje všechny platné
hodnoty. Praktický příklad vše ozřejmí:
10 14 * * 1-5 echo "Za chvili padla" Tento příkaz se
vykoná v pracovní
dny vždy ve 14:10. Vypíše na standardní výstup
nějaký text, který vám
bude zaslán emailem. Pokud vás cron zaujal, přečtěte si
manuálovou
stránku man 5 crontab (v systému jsou dvě
manuálové stránky se stejným
názvem, ta pětka určuje sekci, ve které ji chcete
hledat).
Mám pro vás ještě jedno uplatnění cronu. Kdysi jsem konfiguroval v jedné firmě Linux jako poštovní server připojený do Internetu modemem. Dostal jsem časový rozvrh, kdy se má vyměnit pošta. Sestavil jsem si skript a ten jsem přesně podle rozvrhu vložil do cronu. Skript vytočil modem, stáhl přes UUCP poštu pro celou doménu, odeslal dopisy z místní sítě a zavěsil. Jednoduché, že?
V předchozích číslech jsem vám zatajoval existenci vynikajícího manažera souborů Midnight Commander. Dnes to tedy napravím. MC spustíte příkazem mc. Objeví se vám prostředí nápadně podobné dosovskému Norton Commanderu, tedy modré pozadí, menu nahoře, lišta s příkazy dole a mezitím dva panely obsahující soubory. MC se ovládá buď klávesnicí nebo myší (pokud je dobře nastavena). Klávesové zkratky jsou přejaty z NC, takže F1 je nápověda, F2 uživatelské menu, F3 interní (hexa) prohlížeč souborů, F4 editor, F5 kopírování, F6 přesouvání/přejmenování, F7 vytváří adresáře, F8 maže soubory či adresáře, F9 rozbalí hlavní menu a konečně F10 ukončí práci s manažerem.
Midnight má spoustu nastavení, zvláště
vám doporučuji nastavit Lynx-like motion (pohyb) v Nastavení/Konfigurace.
Pak šipka vlevo vás okamžitě přenese o adresář výš
a šipka vpravo
otevře adresář, na kterém je kurzor. Nezdá se to,
ale je to skvělá
vlastnost, která vám ušetří spoustu času a
úhozů na klávesnici. Dále si
nastavte v Nastavení/7/8bitů display plných osm
bitů na vstupu
i výstupu. Důvodem je správné
zobrazování a vkládání
českých znaků. MC
má v sobě integrován virtuální
souborový systém, který dokáže pracovat
s archivy (zip, arj, rpm), jako by to byly normální
adresáře. Podobně
zvládá i ftp. V Nastavení/Virtuální
FS můžete určit, po kolika
sekundách se má obsah VFS smazat, heslo pro
anonymní ftp přístup a také
adresu proxy serveru, pokud za nějakým jste.
2
Podívejme se nejdříve na expanzi parametrů. Představte si, že hledáte nějaký soubor ve svém domovském adresáři. Nevzpomínáte si přesně na jeho název, ale pamatujete si, že začínal písmenem a. Pro jednoduchost zapomeňme na existenci příkazu find, který by zkušenějším uživatelům značně ulehčil práci. Výpis všech souborů v aktuálním adresáři získáme použitím příkazu ls. Jenže nás zajímají soubory začínající písmenem a. Jak na to? Jednoduše. Napíšeme příkaz ls a* a je to. Hvězdička totiž zastupuje libovolný řetězec a to i nulové délky. Takže výraz a* zachytí slova a, až, ahoj i abrakadabra.
Abyste si vše mohli krásně procvičit, vytvoříme si testovací soubory. Nejdříve si otevřete nějaký terminál. V něm napište mkdir test. Takto jste si vytvořili adresář test. Pak do něj vejděte příkazem cd test. Nyní vytvořte testovací soubory příkazem touch alena anketa adresy binary.xpm bitmapa.tgz eva.txt. Příkaz touch mění údaj o posledním přístupu na zvolený soubor a pokud tento soubor neexistuje, vytvoří jej.
Hvězdička ale nemusí být jen na konci výrazu. Může se vyskytovat kdekoliv a nic nám nebrání ji použít vícekrát. Příkaz ls *e* nám zobrazí soubory adresy alena anketa eva.txt. U prvního souboru první hvězdička zachytí al, e jsme určili explicitně a na je zachyceno druhou hvězdičkou. Podobně u zbylých souborů. Snad vás může zarazit eva.txt, ale u tohoto souboru si vzpomeňte, že hvězdička nahrazuje i řetězec o nulové délce.
Dalším zástupným znakem je otazník. Ten vám nahradí libovolný jeden znak. Takže pokud nevíte, zda hledáte Alenu či Ilonu, zkuste příkaz ls ?l?na. Hned budete vědět, s kým jste to měli čest se seznámit :-). Možná trochu reálnější případ: už jste si určitě všimli, že Linux (stejně jako všechny ostatní Unixy) rozlišuje malá a velká písmenka. Takže Alena a alena jsou dva rozdílné soubory. Pokud tedy víte, že hledáte Alenu a nejste si jisti, jaké počáteční písmenko jste použili, zkuste příkaz ls ?lena.
Dalším trikem jsou hranaté závorky. Ty mají podobný význam jako otazník. Oba nahrazují pouze jediné písmeno. Jenže otazník si nevybíral a zastupoval všechny znaky, kdežto závorky zastupují jediný znak ze seznamu písmen, která jste uzavřeli do hranatých závorek. Například ls [ae]* vám zobrazí všechny soubory začínající písmeny a nebo e. Jasné? Někdy by bylo moc dlouhé vypisovat všechna písmena, která chcete použít. Pokud tato písmena (nebo aspoň jejich části) tvoří posloupnost, můžeme si ulehčit psaní (a zpřehlednit příkaz) použitím pomlčky. Napíšeme první znak, za něj ihned pomlčku a nakonec umístíme poslední znak řady. Takže [a-e] je totéž jako [abcde]. Vyzkoušejte si to třeba na příkazu ls [a-e]*. A mimochodem, pokud potřebujete použít pomlčku jako obyčejný znak, dejte ji na začátek nebo konec seznamu.
Dejme tomu, že chcete zobrazit všechny soubory, které nemají na začátku svého názvu písmeno a. Opravdu se vám chce vypisovat všechny možnosti? Mě ne. Raději použiji tento příkaz: ls [^a]*. Znak stříšky na začátku seznamu totiž působí jako negace výrazu. Takže ^a znamená libovolný znak kromě písmene a.
Velice užitečným zástupným znakem je i tilda, pokud ji umístíme na začátek výrazu. Obecně se totiž stará o cestu k uživatelským domovským adresářům. Pokud je použita samostatně a nenásleduje za ní text (kromě lomítek), má význam vašeho domovského adresáře. Viz ls ~, který vám vypíše obsah vašeho domovského adresáře. Pokud ale hned za tildu umístíte přihlašovací jméno některého vašeho kolegy, výraz se vám expanduje do cesty k jeho domovskému adresáři. Například ~literakl. Tento trik se vám bude hodit, když budete potřebovat něco zkopírovat z/do vašeho adresáře, zatímco jste někde hluboko na vašem disku. Ať jste kdekoliv, příkaz cp *.png ~/temp zkopíruje všechny obrázky typu PNG do adresáře temp ve vašem domovském adresáři.
Přesměrování standardního vstupu a výstupu si necháme na příště, raději přeskočím ke slíbené virtuální konzoli. Pokud sedíte fyzicky u počítače s Linuxem, máte k dispozici několik konzolí, na kterých můžete pracovat. Nebudu se snažit vysvětlit, co to konzole je a místo toho vám ukážu, jak s ní pracovat. Pokud nepoužíváte Calderu či Corel Linux, určitě jste si všimli, že během startu vám naskakuje spousta řádek s informacemi. Právě toto je konzole číslo jedna. Až se Linux celý nabootuje, pak se buď přepne do grafického režimu a nebo se vám objeví výzva k přihlášení. Pokud jste v grafickém systému XWindow, na konzoli se dostanete současným stiskem kláves Control, Alt a F1.
Nyní se přihlašte a začněte něco dělat. Třeba si vypište obsah domovského adresáře. Teď vás ale napadne, že chcete dělat něco úplně jiného, jenže nechcete přijít o rozdělanou práci. Pod dosem byste měli smůlu a museli byste si vybrat. Ne tak pod Linuxem. Prostě stiskněte Alt a F2. A máte k dispozici další konzoli, kde můžete začít pracovat znovu nezávisle na ostatních konzolích. Prostě Linux je ideální pro nás roztěkané :-). Takových konzolí (virtuálních přístupových bodů k počítači) je v Linuxu obvykle šest až osm, přičemž poslední slouží pro grafický režim. Přepíná se mezi nimi pomocí kláves Alt a FX, kde X je pořadové číslo virtuální konzole. Druhou možností je je současný stisk klávesy Alt a šipky doleva či doprava. Pokud se chcete vrátit zpátky do X Window Systému, zkuste Alt a F7. Pokud to nepomohlo, buď jste ty Xy ještě nespustili nebo jsou umístěny na jiné pozici a pak nezbývá než použít metodu pokusu a omylu. Pokud chcete naopak přepnou z Xkek na jinou konzoli, použijte Control Alt Fx.
To je prozatím vše, příště si povíme něco o
použití prostředního tlačítka myši :-).
3