Vod do unixu 5 th round
This presentation is the property of its rightful owner.
Sponsored Links
1 / 19

Úvod do UNIXu (5 th round) PowerPoint PPT Presentation


  • 48 Views
  • Uploaded on
  • Presentation posted in: General

Úvod do UNIXu (5 th round). David Hoksza a Jakub Galgonek galgonek @ksi . mff.cuni.cz. Program vs. proces. program kus k ódu uložený na záznamovém zařízení proces spuštěný (ne nutně běžící) program kontext procesu paměť (adresový prostor) soubory proměnné stav registrů

Download Presentation

Úvod do UNIXu (5 th round)

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Vod do unixu 5 th round

Úvod do UNIXu (5th round)

David Hoksza

a Jakub Galgonek

[email protected]


Program vs proces

Program vs. proces

  • program

    • kus kódu uložený na záznamovém zařízení

  • proces

    • spuštěný (ne nutně běžící) program

    • kontext procesu

      • paměť (adresový prostor)

      • soubory

      • proměnné

      • stav registrů

      • credentials (UID, GID, …)…

    • identifikace přes PID (Proces ID)


Stavy proces

Stavy procesů

Process table

fork()

Zombie

  • process state

  • PID

  • PPID

  • UID

  • prioriy

  • signals sent

  • pointer to memory

  • data

Ready

Ready

swap out

swap in

exit

schedule

User

running

Kernel

running

return

system call,

interrupt

wakeup

wakeup

sleep

Asleep

Asleep

Preempted

swap out

Memory

Disk


U ivatelsk relace

Uživatelská relace

Vytvoří synovský proces

Přepíše adresový prostor vytvářecího procesu

fork()

init

getty

exec()

login

login:

passwd:

Čeká na ukončení

exec()

fork()

ftp

ftp>

sh

$

wait()

exit()

PID 1

PID 271

PID 312


Seznam proces

Seznam procesů

  • ps [options]

    • výpis procesů

    • -A

      • všechny procesy (TTY ? jsou neinteraktivní procesy)

    • -l

      • long – podrobný výpis

    • r

      • běžící procesy

    • -C cmd_list

      • seznam procesů s názvem z cmd_listu (seznam oddělený čárkamy)

    • -U uid_list, -u user_list

      • seznam procesů s vlastníky (U–efektivní UID/jméno, u – skutečné UID/jméno) ze seznamu

    • u

      • podrobnosti

    • -p processID

      • vypíše proces s daným ID

    • -t tty

      • seznam procesů běžících na terminálu tty

    • -H

      • stromová struktura

  • top

    • interaktivní seznam procesů se statistikama


Pr ce s procesy

Práce s procesy

  • kill[-signal] PID

    • pošle signal procesu PID

    • defaultně ukončí proces

  • cmd &

    • pustí program v pozadí

  • waitPID

    • čeká na dokončení procesu

      • sort big-data > sorted_data &

      • [1]3423

      • wait 3423

  • bg job_name

    • přesune job job_name (jméno v ps) do pozadí

  • fg job_name

    • přesune proces job job_name do popředí

  • trap cmd signals

    • když shell přijme signál ze signals (odděleno mezerami) provede cmd


Sign ly

Signály

  • kill –l, trap -l … seznam signálů


Shell

Shell

  • obslužný program pro komunikaci se sytémem

    • interaktivní zpracování

      • zadávání příkazů v terminálu

    • neinteraktivní zpracování

      • dávkový soubor

  • programovací jazyk (proměnné, tok programu, …) a zároveň interpret

  • typ shellu určuje možnosti práce se systémem (historie, speciální klávesy, …)

  • shelly

    • sh – Bourne shell

    • bash – Bourne Again shell

    • (t)csh – C shell

    • ksh – Korn shell


Shell verze

Shell - verze

  • shell (sh)

  • Steve Bourne (1979)

  • test, funkce, … (1980)

  • C shell (csh)

  • Bill Joy (1979)

  • BSD

  • historie

  • aliasy

  • Korn shell (ksh)

  • David Korn (1980-)

  • Tenex C shell (tcsh)

  • Ken Greer (1979)

  • dokončování jmen souborů

  • editace příkazové řádky

  • Bourne-again shell (bash)

  • Brian Fox (1987)

  • GNU Project


Skripty

Skripty

  • skript je posloupnost příkazů

  • kód skriptu je pušťen v nové instanci shellu

  • provádění skriptu je ekvivalentní zadávání příkazů z klávesnice “online”

  • spouštění

    • sh script_name

    • ./script_name

      • uživatel musí mít r a x práva

      • první řádka skriptu určuje shell, který bude provádět příkazy

        • #!/bin/bash

    • script_name

      • skript musí být umístěn v adresáři z proměnné prostředí PATH


Prom nn

Proměnné

  • case sensitive

  • proměnné prostředí obvykle velkými písmeny, ostatní malými

  • nastavení

    • name=value

  • použití

    • $name, ${name}

  • netypované

    • řetězcové

      • i=3+5; echo $i

      • declare i

    • číselné (pouze celočíselná aritmetika)

      • declare –i i; i=3+5; echo $i

      • i=$((3+5)); echo $i

  • součást prostředí (environment)

  • do procesů potomků se předávají pouze exportované proměnné

    • export variable

    • set

      • výpis všech proměnných


Defaultn prom nn prost ed

Defaultní proměnné prostředí

  • HOSTNAME

    • jméno aktuálního stroje

  • IFS

    • separátory polí (Input Field Separator)

  • PATH

    • seznam adresářu v kterých hledat příkaz ke spuštění

  • PS1

    • řetězec promptu (zobrazuje se na začátku řádku při vyčkávání na příkaz)

  • SHELL

    • defaultní shell

  • PPID

    • process ID rodiče

  • PWD

    • aktuální adresář

  • SECONDS

    • počet sekund běhu aktuálního shellu

  • UID

    • User ID aktuálního uživatele


Podm n n substituce prom nn ch

Podmíněná substituce proměnných

  • ${var:-value}

    • použij var a není-li definována použij value

  • ${var:=value}

    • použij var a není-li definována přiřaď do ní hodnotu value

  • ${var:?value}

    • použij var a není-li definována vytiskni value a proveď exit

  • ${var:+value}

    • použij value je-li var definovaná, jinak nedělej nic


Pr ce s prom nn mi

Práce s proměnnými

  • ${#var}

    • délka proměnné var

  • ${var#pat}, {var##pat}

    • odebrání vzoru pat zleva (## je hladové)

  • ${var%pat}, {var%%pat}

    • zprava

  • ${var/pat/repl}

    • nahrazení prvního vzoru pat řetězcem repl

  • ${var//pat/repl}

    • nahrazení všech vzorů

  • ${var/#pat/repl}

    • vzor se musí vyskytovat na začátku

  • ${var/%pat/repl}

    • vzor se musí vyskytovat na konci

  • mv $filename ${filename}~


Speci ln prom nn 1

Speciální proměnné (1)

  • $#

    • počet argumentů

  • $?

    • návratová hodnota posledního příkazu

  • $$

    • PID aktuálního procesu

    • vhodné pro dočasné soubory

  • $!

    • PID posledního spuštěného procesu

      • prog1 &

      • pid1=$!

      • wait $pid1


Speci ln prom nn 2

Speciální proměnné (2)

  • $0

    • jméno programu

  • $n, ${n}

    • hodnota n-tého argumentu (pozice větší než 9 se adresují pomocí {})

  • $*, $@

    • všechny argumenty ($1 $2 ….)

  • “$*”

    • “$1 $2 ….”

  • [email protected]

    • “$1” “$2” ….

  • shift[N]

    • posun vstupních parametrů o N (defaultně 1)

      • echo $*; shift; echo $*

  • set – arg1 arg2 arg3 …

    • znovunastaví vstupní proměnné


Metaznaky shellu

Metaznaky shellu

  • znaky se speciálním významem

  • * ? > < | & [ ] $ ( ) ; , atd.

  • rušení speciálního významu

    • \

      • zrušení významu následujícího znaku

    • “xxx”

      • neruší význam $ ` ”

    • ‘xxx’


Pr ce s uvozovkami

Práce s uvozovkami

  • “ “

    • každý znak mezi uvozovkami se chápe jako literál až na:

      • $ … provádí se expanze proměnné

      • ` … provádí se příkaz mezi ` `

      • “ … ukončuje

  • ‘ ‘

    • každý znak mezi uvozovkami se chápe jako literál až na ’

  • \

    • znak za \ je chápán jako literál (použití, aby shell nechápal např. argumenty příkazů jako znaky pro expanzi)

  • př.:

    • echo ‘Single quotes “double quotes”’

    • echo “Another way how to handle \“double quotes\””

    • echo “There are `ls | wc –l` files in `pwd`”

    • echo “Value of variable \$var is $var”

  • http://www.csd.uwo.ca/~magi/personal/humour/Computer_Audience/Funny%20UNIX%20Shell%20Commands.html


Formy p kaz

Formy příkazů

  • cmd &

    • spustí cmd v pozadí

  • cmd1; cmd2

    • posloupnost příkazů

  • { cmd1; cmd2; }

    • spustí posloupnost jako skupinu v aktuálním shellu

  • ( cmd1; cmd2; )

    • spustí posloupnost jako skupinu v subshellu

  • cmd1 `cmd2`, cmd1 $(cmd2)

    • spustí cmd1 s výstupem cmd2 jako argumentem

  • cmd1 && cmd2

    • AND … spustí cmd2pouze za podmínky, že se cmd1 podaří (vrátí 0)

  • cmd1 || cmd2

    • OR … zpustí cmd2, když cmd1 neprojde

  • ! cmd

    • vrátí 0 když cmd vrátí nenulu a naopak (obrací význam návratové hodnoty)


  • Login