&
bg
přesun procesu na pozadí
fg
přesun procesu na popředí
http://www.linuxsoft.cz/article.php?id_article=409
Procesy - signály
Signál je jedním ze základních prostředků meziprocesové komunikace Poslání signálu běžícímu procesu vyvolá asynchronní reakci proces přestane vykonávat běžný kód a přednostně reaguje na signál Nejčastější signály: −
SIGTERM - standardní ukončení programu
−
SIGKILL - násilné ukončení programu
−
SIGSTOP - pozastavení běhu procesu
−
SIGCONT - znovuspuštění pozastaveného procesu
−
SIGHUP - ukončování terminálu (odhlášení)
−
SIGINT - přerušení programu klávesovou zkratkou Ctrl-C
démon (daemon)
proces, který neustále běží „na pozadí“, kde průběžně vykonává nějakou činnost a není (za běžných okolností) ukončován.
démon obvykle nijak nekomunikuje s uživatelem, pracuje samostatně
proces , který běží v systému a poskytuje nějaké služby
používá se také termín služba (service).
běží nezávisle na tom, jestli je k systému někdo přihlášen nebo ne, spouští se obvykle hned po startu systému −
web server
−
dns server
−
dhcp server
−
sendmail, ....
Plánování procesů - cron , at
Uživatelé i správci systému často potřebují spouštět některé programy pravidelně. Například administrátor systému, který musí sledovat zaplněnost disku, by mohl chtít pravidelně spouštět příkaz, jenž by „vyčistil“ adresáře dočasných souborů (/tmp a /var/tmp). Program by odstranil starší dočasné soubory, které po sobě programy z různých důvodů korektně nesmazaly. Takovéto služby nabízí program cron. Každý uživatel má vlastní soubor crontab, jenž obsahuje seznam příkazů, které chce vlastník spustit, a časy, kdy se mají tyto příkazy provést. Démon cron má na starosti spouštění těchto příkazů v požadovaném čase. Služba at je podobná službě cron, provede se ale jenom jednou. Příkaz je vykonán v určeném čase, ale jeho spouštění se neopakuje. Podrobnější informace viz manuálové stránky cron(1), crontab(1), crontab(5), at(1) a atd(8). http://cs.wikibooks.org/wiki/Plánování_spouštění_úloh
Programování v shellu – skripty, spouštění scriptu, strukturované příkazy
BASH není pouze příkazovou řádkou, ale zároveň také plnohodnotným skriptovacím jazykem rozdíl mezi skriptovacím a kompilovaným jazykem Skriptovací jazyky začínají psaním zdrojového kódu, ale nejsou kompilovány. Místo toho interpreter jazyka čte instrukce ze zdrojového kódu a podle obsahu tyto instrukce vykonává Shell umí interpretovat scripty ( textové příkazové soubory) Script se často používá v situacích, které se opakují a je výhodné je zautomatizovat - např. boot systému, přihlášení uživatele apod. Hlavní výhodou scriptu je jeho čitelnost a snadná úprava. Nevýhodou je pomalé zpracování. Script lze spustit stejně, jako binární program. Soubor by měl být umístěn v adresáři uvedeném v proměnné PATH, uživatel musí mít právo x http://docs.linux.cz/programming/interpreted/bashdoc-1.4/
Proměnné
Místa v paměti označená identifikátorem (názvem proměnné).
V bash se proměnné deklarují např takto:
#!/bin/bash x=5 echo "Hodnota proměnné x je $x"
k proměnné se přistupuje pomocí znaku symbolu dolaru ($) uvedeného před názvem proměnné
Hlavní systémové proměnné
$$ - obsahuje pid aktuálního procesu (ať víte co zabíjet :-)
$0 - obsahuje jméno právě prováděného skriptu: mujskript.sh
$1 - obsahuje první argument, předaný vašemu skriptu, na příkazové řádce: parametr1
$9 - obsahuje 9-tý argument z příkazové řádky: parametr9
$# - obsahuje počet argumentů z příkazové řádky −
mujskript.sh parametr1 parametr2 parametr3 ... parametr9
Vstup/výstup
Skript může získat od uživatele data příkazem read promenna. Tímto se načte do proměnné promenna vše až do stisku klávesy enter. −
Pokud uvedeme více proměnných, uloží se do každé proměnné jedno slovo.
−
read promenna1 promenna2 .... promennaN
výstup programu zajišťuje příkaz echo −
echo “ Ahoj, ja jsem bash skript a jmenuju se $0. Co jsi ty?“
echo -n “ Zadej svuj plat:“ read plat echo “ Nevypadas jako bys vydelaval $plat korun.“
SHELL - Řídící struktury
Řídící struktury můžou váš program řídit a tím ho udělat mnohem více užitečný a efektivnější. Velmi důležitá je například detekce chyb Řídící struktury jsou: if , case
while , until , for ,
Každá tato struktura je tzv. párová. To znamená, že začíná jako "návěst" a končí taky "návěst". Například struktura podmínky začíná if a končí fi −
If ... else ... elif ... fi
−
Case ... in ... esac
−
While ... do ... done
−
Until ... do ... done
−
For ... in ... do ... done
IF struktura pro rizeni pomoci podminek
if [ podminka ] then prikazy else prikazy fi Pokud je podminka splnena vykonaji se prikazy za slovem then, pokud podminka neni splnena provedou se prikazy za slovem else, fi urcuje konec
CASE
case – struktura podobná funkci if, ale zde můžeme testovat více hodnot
case vyraz in hodnota1) prikazy;; hodnota2) prikazy;; hodnota3) prikazy;; esac Pokud je promenna vyraz rovna hodnote1, tak se vykonaji prikazy(ukoncene jsou ;;). Konec funkce se ukonci slovem esac.
WHILE
while - cyklus se provádí dokud je podmínka splněna
while [ logicky_vyraz ] do prikazy done
UNTIL
until -příkaz je podobný přikazu while, ale je opačná podminka. cyklus trvá tak dlouho, dokud neni splněna podmínka
until [ logicky_vyraz ] do prikazy done
#!/bin/bash x=0;
# inicializuje hodnotu x na 0
while [ "$x" -le 10 ]; do echo "Aktualní hodnota x: $x" # zvyseni hodnoty x o 1 x=$[$x + 1] sleep 1 done
#!/bin/bash x=0 until [ "$x" -ge 10 ]; do echo "Aktualni hodnota x: $x" x=$[$x + 1] sleep 1 done
FOR
tento cyklus je vhodny pro pripady, kdy vime, kolikrat se bude cyklus opakovat
for promenna in seznam do prikazy done Příklad: for i in 'ls *.txt' do cp $i ${i}.bak done Program vyhleda v aktualnim adresari vsechny soubory s priponou *.txt a zalohuje je na soubory s priponiu *.bak.
Řízení cyklu break a continue
Cyklus lze předčasně ukončit nebo vynutit jeho okamžitý další průběh (od jeho začátku). Tyto operace narušují pravidla strukturovaného programování avšak obvykle se používají proto, že odstraňují nutnost vkládat do cyklu další podmínky. Jejich použití by proto mělo vést ke zpřehlednění a zjednodušení cyklu (a ne naopak). Příkazy nemají vliv na právě zpracovávanou podmínku, mají vztah pouze k nadřízené smyčce.
break [n] ukončí n-tou úroveň cyklu for, while, until bez parametru ukončí nejbližší cyklus
continue [n] zahájí další iteraci cyklu n-té úrovně bez parametru zahájí další průběh nejbližšího cyklu
Logické výrazy
K vyhodnocováni logických výrazů se používá −
Příkaz test
−
nebo hranatá závorka
[ výraz ]
if test -f /etc/foo # se dá také zapsat takto: then If test -f /etc/foo then #Soubor existuje. Zkopíruj tedy soubor cp /etc/foo . echo "Hotovo!" else # Soubor neexistuje. Vypiš tedy chybu echo "Soubor neexistuje!" exit fi
if [ -f /etc/foo ] ; then
Testování typu souboru: -b soubor soubor existuje a je blokovým speciálním souborem -c soubor soubor existuje a je znakovým speciálním souborem -d soubor soubor existuje a je adresářem -e soubor soubor existuje (pouze vestavěný příkaz test) -f soubor soubor existuje a je normálním souborem
Testování přístupových práv
viz
-g soubor soubor existuje a má nastaven bit SGID -k soubor soubor existuje a má nastaven ’sticky’ bit -r soubor soubor existuje a lze jej číst -u soubor soubor existuje a má nastaven bit SUID -w soubor soubor existuje a lze do něj zapisovat -x soubor soubor existuje a je proveditelný
man test
Testování řetězců -z řetězec
Délka řetězce je nulová
-n řetězec
Délka řetězce je nenulová
řetězec1 = řetězec2
řetězce jsou shodné
řetězec1 != řetězec2 řetězce se neshodují
Numerické testy číslo1 -eq číslo2 (rovnost čísel) číslo1 -ne číslo2 (nerovnost čísel)
viz
man test
číslo1 -lt číslo1 (číslo1 < číslo2) číslo1 -le číslo2 (menší rovno) číslo1 -gt číslo2 (větší) číslo1 -ge číslo2 (větší rovno)
Logické výrazy ! výraz
výraz je nepravdivý
výraz1 -a výraz2
výraz1 a výraz2 jsou pravdivé
výraz1 -o výraz2
výraz1 nebo výraz2 je pravdivý
Zachytávání signálů – příkaz trap
Zachytávání signálů ●
●
●
Signál je událost, kterou generuje systém UNIX (Linux) jako odpověď na nějakou podmínku a po jehož přijetí může proces (skript) provést nějakou akci. Signály generují některé chybové podmínky, například porušení segmentů paměti, chyby procesoru v plovoucí čárce nebo neplatné instrukce. Jsou generovány shellem a ovladači terminálu, které vyvolají přerušení.
Ve skriptech je možné použít zabudovaný program trap, který dovede zachytávat signály ●
trap akce signál
●
Kde akce je to, co bude vykonáno při doručení signálu aplikaci.
●
●
Signál je název signálu, který bude-li doručen, tak se vykoná příslušná akce.
●
Příklady # dojde-li signál, spustí funkci sorry() trap sorry INT # resetuje akci (nastavuje standardní chování SIGINT) trap – INT #nastavuje signál tak, aby byl ignorován trap '' INT
Seznam signálů:
man 7 signal kill -L
#!/bin/bash trap sorry INT sorry() { echo "Sorry, to jsem nechtěl!" sleep 3 } for i in 10 9 8 7 6 5 4 3 2 1; do echo "$i sekund do selhání systému." sleep 1 done echo "Systém selhal!"
Nástroje pro práci s textem, význam textového formátu dat
základní uživatelské rozhraní (ve smyslu komunikace uživatele se sytémem) je textové rozhraní a příkazový řádek −
grafické rozhraní je něco „navíc“, jenom jakási nadstavba
cokoliv se v Linuxu prezentuje jako soubor, s kterými se na příkazovém řádku snadno pracuje Linux je založen na textových souborech, s kterými uživatel přímo pracuje (prohlížení,editace,další zpracování,...) Aplikace v Linuxu ukládají konfigurace do konfiguračních souborů −
jednoduchá editace
−
jednoduchá záloha
Propracované logování – vše se zapisuje do logů −
možnost dohledat chyby, útoky, ...
Textové editory
nejrozšířenější textové editory v GNU/Linuxu Vim a Emacs
další editory mcedit, joe
používají regulární výrazy k vyhledávání textu a také k jeho nahrazování Editor Vim (vi) −
Spuštění - vi soubor
−
Režimy - editační , příkazový , řádkový
−
Základní příkazy
−
Pohyb v textu
−
Hledání vzorků
Filtry
jsou to programy, které jako vstup přijímají text, provedou s nim nějaké operace a pak upravený text vypíšou na obrazovku cat - tento příkaz čte data ze standardního vstupu a zobrazuje je na standardním výstupu (načte text a zobrazí jej)
more - používá se k dokonalejšímu vypsání souborů, interaktivní
less - vylepšení příkazu more
sort - příkaz načte vstupní soubor a setřídí ho
cut - vypíše na obrazovku zadané sloupce ze vstupních souboru
head - příkaz zobrazí prvních 10 řádků ze souboru (počet řádků lze měnit pomocí parametru) tail - příkaz zobrazí posledních 10 řádků ze souboru (počet řádků lze měnit pomocí parametru) grep
Příkaz grep Příkaz grep čte data (text) ze standardního vstupu a na výstup vypisuje řádky odpovídající jistému vzoru. Příkaz ls -l /dev | grep petera vezme z výstupu příkazu ls pouze řádky se soubory, na nichž se vyskytuje slovo 'petera', což budou pravděpodobně soubory, jejichž vlastníkem je uživatel 'petera'. Pokud lze předpokládat, že řádku bude mnoho, lze ještě použít filtr more, např: ls -l /dev | grep root | more
GREP a spol.
slouží k vyhledávání v souborech Typické použití: hledáme určitý identifikátor ve zdrojových kódech nebo chceme zjistit, odkud se spouští určitý program. Spuštění: grep vzor seznam_souborů −
Vzorem je regulární výraz.
−
Výstup programu tvoří řádky, které vyhovují zadanému vzoru Pokud program zkoumá více než jeden soubor, vypíše zároveň před každý řádek název souboru, ze kterého pochází.
grep , egrep , fgrep
Regulární výrazy
zkráceně označovaný regexp či regex je to předpis pro porovnávání textových řetězců podle určitých vzorků univerzální pomocník při práci s textem sestávají z "normálních" znaků a z metaznaků
Jejich prostřednictvím můžete: vytahovat z textových dat údaje, které vás zajímají
přetvářet je do podoby, kterou potřebujete vyhledávat a nahrazovat v textových editorech a dalších programech
regulární výrazy – wikipedia
http://www.root.cz/serialy/regularni-vyrazy/
http://www.regularnivyrazy.info/
Regulární výrazy
Je to předpis pro porovnávání textových řetězců podle určitých vzorů sestávajících z "normálních" znaků a z metaznaků - znaků majících zvláštní význam, viz dále. Rozlišují se malá a velká písmena (většina implementací umožňuje jejich rozlišení potlačit, pokud je to žádoucí). Regulární výrazy jsou "žravé". To znamená, že se každá část výrazu snaží vždy "spolknout" co nejvíce vyhovujících znaků, teprve pak se pokračuje ve zkoumání dalších částí výrazu. Mají paměť - můžete si zapamatovat část vyhovujícího řetězce a použít ji později. Používají se mj. v textových editorech (vi, ed,..), skriptovacích programech (awk, perl, Tcl,..), prostředcích pro práci s textem (grep, sed,..). Knihovnou pro práci s regulárními výrazy dnes disponuje řada programovacích jazyků.
Regulární výrazy - použití
Používá celá řada programů v Unixu. Umožňují prohledávat soubory (grep, egrep), editovat je (sed, vi), analyzovat a vypočítávát zajímavé údaje (awk) či nabízejí plnohodnotný programovací jazyk, kde si můžete dělat, co vás napadne (Perl, Tk).
GREP a spol.
slouží k vyhledávání v souborech Typické použití: hledáme určitý identifikátor ve zdrojových kódech nebo chceme zjistit, odkud se spouští určitý program. Spuštění: grep vzor seznam_souborů −
Vzorem je regulární výraz.
−
Výstup programu tvoří řádky, které vyhovují zadanému vzoru Pokud program zkoumá více než jeden soubor, vypíše zároveň před každý řádek název souboru, ze kterého pochází.
grep , egrep , fgrep
SED
Program sed je neinteraktivní editor
Zadáte mu sadu příkazů a on podle nich zpracuje vstupní text
Regulární výrazy se v sedu vyskytují hned ve dvojí roli:
Lze je použít k vyhledání řádků, na které se má vztahovat určitý příkaz. Druhým místem výskytu regulárních výrazů je příkaz pro nahrazování, který má tvar s/vzor/náhrada/.
Vyhledává regulárním výrazem zadaný vzor a pokud jej najde, vloží na jeho místo náhradu
AWK
Program awk realizuje specializovaný programovací jazyk, který umožňuje zpracovávat textové soubory s pevnou strukturou (např. /etc/passwd, výstup příkazu ls -l a podobně). Regulární výrazy opět vystupují ve dvou známých rolích: určují řádky, kterých se operace týká, a vyskytují se v nahrazování. Základním problémem awku je jeho jednostrannost. Syntaktický tvar programů je velmi nezvyklý a držet jej v hlavě kvůli úzce vymezené skupině úloh, které dokáže řešit, se podle mého soudu nevyplatí.
http://cs.wikipedia.org/wiki/AWK
http://www.ucw.cz/~hubicka/skolicky/skolicka20.html
http://www.ics.muni.cz/zpravodaj/articles/33.html
Základy práce v systému - základní příkazy, archivace, vyhledávání souborů, instalace a aktualizace SW
ls
cd [ADRESÁŘ]
pwd
cp několik
vypíše obsah aktuálního nebo zadaného adresáře změní aktuální adresář
zobrazí aktuální adresář zkopíruje soubor do jiného souboru, nebo zkopíruje souborů do zadaného adresáře
mv přesouvá soubory do jiného adresáře , nebo je přejmenuje
mkdir vytvoří nový adresář
rmdir
rm
chmod
zruší prázdný adresář smaže jeden nebo více souborů mění atributy souborů
Základní příkazy OS Linux - pokračování
cat , less
df
du
free
passwd
vypíše obsah souboru na obrazovku
zobrazí kapacitu, obsazení a volné místo všech připojených jednotek (pevné disky, CD-ROMy) zobrazí velikosti adresářů zobrazí kolik je obsazené a volné paměti ram a místa v odkládacím prostoru (swap) změna hesla
Archivace - program tar
K archivaci dat slouží program tar (tape archiver) − −
Původně byl určen k archivaci na magnetickou pásku Vytvoření archivu znamená, že několik souborů spojíme do jednoho a jsme schopni tento celistvý soubor zase následně rozdělit do původních souborů anebo přidat/ubrat soubory do/z tohoto archivu
Program tar pracuje ve čtyřech různých módech, − x - rozbalení existujícího archivu (extract), − c - vytvoření nového(create), − t - výpis obsahu − r - přidání souboru do archivu. Vytvoření archivu: tar cvf home.tar /home/kmartin − f (file) - říká, že tar má zapisovat do souboru , v - verbose Rozbalení archivu: tar xvf home.tar
Komprimace
Komprimace - zmenšení velikosti souboru V GNU/Linuxu nemůžeme vzít adresář a ten celý zkomprimovat do jednoho souboru. Nejprve si vytvoříme archiv, který bude tyto soubory obsahovat a ten následně zkomprimujeme. gzip - používá pro kompresi kompresní metodu LZ77 −
Defaultní přípona gzip archivu je .gz.
−
Balení (komprimace):
−
Rozbalování (dekomprimace): gzip -d jmeno_gzip_archivu
gzip jmeno_souboru ...
Bzip2 - komprimuje pomocí Burrows-Wheeler block sorting text compression algorithm −
Defaultní přípona bzip2 archivu je .bz2.
−
Balení (komprimace):
−
Rozbalování (dekomprimace): bzip2 -d jmeno_bzip2_archivu
bzip2 jmeno_souboru ...
compress , uncompress – přípona .Z (starší, už se nepužívají)
Shrnutí - archivace
Archivace + komprimace tar cf archiv.tar soubory ; bzip2 archiv.tar tar cf - soubory | bzip2 > archiv.tar.bz2 tar cfz archiv.tar.gz soubory Dekomprimace −
bzip2 -d archiv.tar.bz2 ; tar xf archiv.tar
−
bzip2 -cd archiv.tar.bz2 | tar xf -
−
tar xfz archiv.tar.gz
souborový manažer Midnight Commander zvládá rozbalování archivů tar, gz, bz2, tar.gz, tar.bz2 ..... −
Na takovém archivu jen stačí zmáčknout [enter], tím se z archivu stane readonly adresář a zabalené soubory lze prohlížet a vybalovat (kopírovat z archivu).
Vyhledávání souborů
which - prohledává jen adresáře uvedené "v cestě" PATH a jako výsledek vrací první výskyt hledaného souboru a adresářovou cestu k němu
whereis - pracuje podobně jako which, ale navíc může vyhledávat manuálové stránky a zdrojové soubory
find - příkaz find umí hledat cokoliv a kdekoliv −
Práce příkazu find trvá trochu déle, protože musí prohledat celý adresářový strom. Navíc, pokud jej spouštíte jako normální uživatel, obdržíte nejspíš spoustu chybových hlášení o odmítnutém přístupu do adresářů, které smí prohlížet jenom root
locate - příkaz prohledává celý souborový systém stejně, jako to dělá příkaz find, ale namísto skutečného souborového systéu prohledává svoji databázi. Databáze je nastavena tak, aby se automaticky updatovala