Hlavní navigace

Hrátky z řádky: prompt, file, at a další

18. 2. 2008
Doba čtení: 4 minuty

Sdílet

Opět se setkáváme u pravidelné pondělní dávky tipů a triků z černé řádky. V minulém díle jsme se více věnovali teorii, dnes se zase vrátíme k praxi. Ukážeme si několik úprav promptu, konečně se dostaneme ke slíbeným souborům, na závěr si ukážeme program at pro plánované spouštění úloh a něco více o iftop.

Prompt

Byl by to špatný seriál o CLI, kdybychom se nezmínili o promptu. Troufám si tvrdit, že většina uživatelů Linuxu je zvyklá na bash, a tak se zaměříme na něj. Prompt může vypadat různě, zkuste si třeba následující:

$ export PS1='cekam na rozkazy: '
cekam na rozkazy: export PS1='\u@\H '
root@minastirith.local export PS1='\u@\h \t:'
root@minastirith 22:12:30:

Jak vypadá prompt, definujeme v proměnných PS1 až PS4. Nás budou zajímat především první dvě. PS1 je běžný prompt, PS2 se použije při příkazu delším než jeden řádek. Běžný je definován nějak takhle:

$ echo $PS1
\u@\h:\w$

Znak @ se normálně zobrazí, ale u, h, w a $ mají speciální význam. Např. u nám zobrazí jméno uživatele, h jméno stroje a w je současný adresář. Existují i další symboly, více najdete v man bash, v sekci PROMPTING. U promptu můžeme využít třeba i barvičky (nastavují se pomocí ANSI escape sekvencí). Prostudujte si seznam barviček. Jak vypadá prompt, můžete zapsat třeba do /etc/profile, .bash_profile, … a to nám dává další možnost – můžeme si napsat jednoduchý skript a například rozlišit typ terminálu nebo třeba přihlášeného uživatele:

me=`whoami`
case $me in
    root)
        PS1='\e[0;31m[\u@\h \W]\$ \e[m '
    ;;
    *)
    PS1='[\u@\h \W]\$ '

    ;;

esac

Výsledek pak vypadá nějak takhle:

[pm@minastirith pm]$ su
Password:
[root@minastirith root]#

Něco málo o souborech

Teď se vrátíme ke slíbeným souborům. Když potřebujete rychle vymazat obsah souboru, ale tak aby zůstal zachován vlastník a práva, je zbytečné soubor mazat celý a znovu zakládat. Zadejte jen  > jmeno_souboru.

Ukážeme si program file. Ten se snaží rozeznat, o jaký soubor se jedná:

$ file *
postup.txt:                ASCII text
pp.txt.gz:                 gzip compressed data, was "pp.txt", from Unix, max compression
slax-5.0.5.iso:            empty
wifi_up.sh:                Bourne shell script text executable

Split nám slouží k rozdělení souboru na části. Pokud třeba chcete mailbox rozřezat na jednotlivé maily, zkuste:

$ split -p "^From " /var/mail/pm

Pokud neřekneme jinak, vznikají soubory xaa, xab, xac. Nemusíte rozdělovat jen podle nějakého řetězce vyjádřeného regulárním výrazem. Můžete rozdělovat třeba podle počtu řádků nebo bajtů.

Naopak spojení provedem programem cat. Chci spojit předtím rozdělené soubory začínající písmenkem x:

$ cat x* > spojeny_soubor.

Program at – spuštění úlohy ve stanovený čas

Velice užitečnou utilitkou v každém systému je program at. Slouží nám k jednorázovému spouštění úloh ve stanovený čas. Někdy si povíme i o programu cron, ten se stará o periodické spouštění. Pokud chceme třeba vypnout nebo restartovat server v nočních hodinách, není nic snažšího:

at 23:00
reboot

Ukončete ctrl+d.

Můžete si například naplánovat úlohu měsíc dopředu. At totiž zvládá spoustu časových zadání, vše je popsáno v manuálu. Rád používám například at teatime, at midnight ale je možné i třeba at now + 10 minutes. Musím upozornit, že je možné vložit více než jeden příkaz, můžete třeba vykonat úlohu nakonec přidat příkaz mail na odeslání emailu o úspěšném provedení.

Když si třeba hraji s pravidly na firewallu a je šance, že si odříznu připojení, používám právě at now + 10 minutes a do této úlohy si naplánuji smazání pravidel firewallu.

Příkaz atq nám zobrazí načasované úlohy včetně čísla jobu, příkazem atrm cislo_jobu pak můžeme daný job zrušit.

Více k iftopu

Minule jsem v příkladu o screenu nakousli iftop. Je to moc pěkný a užitečný program, dnes se na něj podíváme detailněji. Iftop nám umožňuje monitorovat sítový provoz. Obrazovka je rozdělena na několik částí, největší část ukazuje vlastní spojení, vpravo jsou pak hodnoty za poslední 2, 10 a 40 vteřin, dole je součet za celou síťovou kartu. Při spuštění parametrem -i určujeme, kterou síťovou kartu chceme sledovat, např. iftop -i eth0. Můžete si vybrat jen některý provoz, například:

$ iftop -i eth0 -f „host www.seznam.cz“

Spousta parametrů se nemusí zadávat jen při spuštění. Když běží iftop, zmáčkněte ?, zobrazí se help. Stiskem klávesy n můžeme vypnout resolvováni IP na DNS, velké N stejně zpracovává čísla portů. Stejného výsledku bychom dosáhli při spouštění iftop a zadání -n a -N. Další zajímavé pohledy jsou třeba pod klávesami t a T. Iftop asi budete muset nainstalovat, nebývá standardní součástí systému.

Pokud si nepamatujete, které číslo nebo jméno má která služba nebo protokol, podívejte se ve svém systému na soubory:

/etc/services
/etc/protocols

Měli byste je najít v každé distribuci, neboť tuto tabulku využívá spousta programů.

Autor článku

Petr Macek studoval aplikovanou informatiku na Jihočeské univerzitě, pracuje jako síťový specialista ve firmě Kostax, s. r. o. Baví ho především FreeBSD, sítě a monitoring Cacti.