vod do unixu 5 th round
Download
Skip this Video
Download Presentation
Úvod do UNIXu (5 th round)

Loading in 2 Seconds...

play fullscreen
1 / 19

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


  • 67 Views
  • Uploaded on

Ú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ů

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Úvod do UNIXu (5 th round)' - merv


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
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í {})
  • $*, [email protected]
    • 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)
ad