´ Uvod do Unixu Richard Liska ˇ FJFI CVUT Bˇrehov´a 7, 115 19 Praha 1
Motto: Some operating systems are called “user friendly”, UNIX however is “expert friendly” (Marcus Harnisch)
8. listopadu 2002
´ Uvod
1
• poˇc´ıtaˇc a jeho ˇc´ asti • typy poˇc´ıtaˇc˚ u • operaˇcn´ı syst´emy
1.1
Poˇ c´ıtaˇ c
• z´akladn´ı schema poˇc´ıtaˇce
CPU
RAM
I/O
BUS • CPU - procesor – – – – – • • • •
ˇr´ıd´ıc´ı jednotka registry v´ ypoˇcetn´ı jednotka podpora I/O vyrovn´avac´ı pamˇet’ (cache)
parametry procesoru - d´elka slova (32, 64 bit), frekvence hodin (Mhz) procesory RISC (Reduced Instruction Set) RAM - operaˇcn´ı pamˇet’ (MB, GB), vyrovn´ avac´ı pamˇet’ (cache) I/O - vstup v´ ystup, perif´erie
1
– – – – –
kl´avesnice obrazovka pevn´ y disk s´ıt’ dalˇs´ı - pruˇzn´ y disk, CD, p´ askov´ a jednotka,scanner,kamera,mikrofon, modem,...
• BUS - sbˇernice, zabezpeˇcuje pˇrenos dat mezi komponenty poˇc´ıtaˇce
1.2
Procesor a program
• jednoduch´ y model
CPU ridici jednotka
RAM 1
LOAD A
2
101
A
3
LOAD B
B
4
102
C
5
ADD A
registry
programova oblast
B
vypocetni jednotka
101
5
102
8
103
I/O
• strojov´ y k´od instrukce 1, adresa 1 instrukce 2, adresa 2 instrukce 3, adresa 3 .. . • pˇr´ıklad LOAD A 101 LOAD B 102 ADD A B STORE A 103 . . • instrukce – – – –
1.3
LOAD, STORE aritmetick´e (ADD) skok (JUMP) I/O - vstup a v´ ystup
Druhy poˇ c´ıtaˇ c˚ u
• osobn´ı poˇc´ıtaˇce
datova oblast
• • • •
pracovn´ı stanice s´alov´e poˇc´ıtaˇce superpoˇc´ıtaˇce zvyˇsov´an´ı v´ ykonu – – – –
1.4
vektorov´e procesory pipeline, zˇretˇezen´ı zvyˇsov´an´ı frekvence paralelismus
Operaˇ cn´ı syst´ em
• z´akladn´ı programov´ y prostˇredek • zabezpeˇcuje obsluhu – periferi´ı – uˇzivatel˚ u – u ´loh • poˇzadavky na operaˇcn´ı syst´em – – – –
2
v´ıce u ´loh v´ıce uˇzivatel˚ u bezpeˇcnost uˇzivatel˚ u, dat, u ´loh s´ıt’ov´a podpora - sd´ılen´ı zaˇr´ızeni jakou jsou disky, tisk´arny, CPU
Dokumentace • manu´alov´e str´ anky, man jm´ eno pˇ r´ ıkazu – – – – – – – –
name, jm´eno pˇr´ıkazu synopsis, syntaxe description, popis options, volby environment, promˇenn´e prostˇred´ı files, soubory kter´e pˇr´ıkaz pouˇz´ıv´ a see also, pˇr´ıkazy s podobnou tematikou bugs, chyby
• xman rozhran´ı pod X-windows • pod Irix insight zpˇr´ıstupˇ nuje knihy z dokumentace, kompletn´ı dokumentace v elektronick´e podobˇe, tiˇstˇen´a verze je podstatnˇe draˇzˇs´ı • pod Linux, soubory v /usr/doc obsahuj´ı dokumentaci k jednotliv´ ym komponent´am OS a dalˇs´ım program˚ um – HOWTO - jak udˇelat – FAQ (Frequently Asked Questions) - ˇcasto pokl´adan´e ot´azky • ˇrada dokument˚ u k Unixu na WWW pˇr´ıstupn´a ve ˇskoliˇck´ach na http://www.paru.cas.cz/˜hubicka/skolicky/
3
Syst´ em soubor˚ u • syst´em adres´aˇr˚ u, oddˇelovaˇcem je “/”, jedin´a struktura adres´aˇr˚ u / bin dev etc lib tmp usr/ bin
catman etc home include lib local var/ adm spool yp
3.1 • • • • •
Adres´ aˇ re, soubory, atributy pwd - aktualn´ı adres´ aˇr cd - zmˇena adres´aˇre speci´aln´ı adres´aˇre ., .. mkdir - vytvoˇren´ı adres´ aˇre ls - v´ ypis adres´ aˇre – -l - v´ ypis atribut˚ u – -a - v´ ypis vˇsech soubor˚ u (jinak se nevypisuj´ı soubory jejihˇz jm´eno zaˇc´ın´a na .) – -t - seˇrazen´e podle ˇcasu
drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r-drwxr-xr-x • soubory
3 125 1 1 1 2
cap root cap cap cap cap
user sys user user user user
512 2048 501 625 73 512
Dec 20 1995 . Oct 11 14:54 .. Apr 7 1995 .cshrc Apr 7 1995 .login Apr 7 1995 .wshttymode Nov 16 1995 bin
– obyˇcejn´e – adres´aˇre – speci´aln´ı • atributy soubor˚ u - pˇr´ıstupov´ a pr´ ava – 1. atribut ∗ - - obyˇcejn´ y soubor ∗ d - adres´ aˇr ∗ l - nepˇr´ım´ y odkaz ∗ c - znakov´ y speci´ aln´ı soubor ∗ b - blokov´ y speci´ aln´ı soubor – n´asleduj´ı 3 trojice 2. 3. 4. vlastn´ık u 5. 6. 7. skupina g 8. 9. 10. ostatn´ı o r w x ∗ r - ˇcten´ı povoleno ∗ w - psan´ı povoleno ∗ x - provediteln´ y program, povoleno ˇcten´ı obsahu adres´aˇre – n´asleduj´ıc´ı atributy ∗ ˇc´ıslo - poˇcet odkaz˚ u ∗ uˇzivatel - vlastn´ık souboru ∗ skupina - skupina souboru ∗ ˇc´ıslo - velikost souboru v bytech ∗ datum - posledn´ı modifikace souboru ∗ jm´eno - jm´eno souboru
3.2
Pr´ ace se soubory a adres´ aˇ ri
• chmod - mˇen´ı atributy povoluj´ıc´ı pˇr´ıstup k soubor˚ um chmod mode files zmˇena pˇr´ıstupov´ ych pr´av k souborum files – – – –
• • • •
mode - tvar: ˇc´ıslo nebo kategorie oper´ator pr´avo kategorie: u, g, o oper´ator: = nastaven´ı, + pˇrid´ an´ı, - odebr´an´ı pr´avo: r, w, x
chmod -r * chmod +r * chmod go-r * chown - zmˇena vlastn´ıka chgrp - zmˇena skupiny newgrp - zmˇena skupiny v n´ıˇz uˇzivatel pracuje cp - (copy) kop´ıruje soubory, vˇzdy 2 argumenty
– cp file1 file2 - kopie souboru file1 do file2 – cp files dirname - kopie souboru files do adres´aˇre dirname • mv - (move) pˇrem´ıst’uje soubory, mnˇen´ı jejich jm´eno – mv file1 file2 - prejmenovani souboru file1 na file2 (vcetne zmeny jmena adresare) – mv files dirname - premisteni files do adresare dirname • ln - (link) vytv´ aˇr´ı nov´ y odkaz na soubor, jeden soubor m˚ uˇze m´ıt v´ıce jmen nebo b´ yt ve v´ıce adres´aˇr´ıch – nelze pro adres´ aˇre a soubory na r˚ uzn´ ych disc´ıch – volba -s symbolick´ y link, lze i pro adres´aˇre a pro soubory na r˚ uzn´ ych disc´ıch • rm - maz´an´ı soubor˚ u -f ruˇsen´ı bez dotazu -i selektivn´ı interaktivn´ı ruˇsen´ı -r zruˇsen´ı cel´eho podstromu vˇcetnˇe adresaˇr˚ u (i nepr´azdn´ ych) • • • • •
3.3
cat - v´ ypis obsahu souboru tail - v´ ypis obsahu konce souboru more - v´ ypis obsahu dlouh´eho souboru po str´ank´ach quota - maxim´ aln´ı pˇridˇelen´e m´ısto na disku, maximum kB a maxim´aln´ı poˇcet soubor˚ u (inodes) du - obsazen´e m´ısto na disku
Pr´ ace s disketami a CD
• pr´ace s dosovsk´ ymi disketami mtools, mdir a:, mcopy a:file . , mcopy file a:, mdel a:file, mcd, mformat a: • pˇripojen´ı dosovsk´e diskety do syst´emu soubor˚ u mount /mnt/msdos-floppy ls /mnt/msdos-floppy cp file /mnt/msdos-floppy cp /mnt/msdos-floppy/f1 . umount /mnt/msdos-floppy • zhotoven´ı unixovsk´eho syst´emu soubor˚ u (ext2) na disketˇe /sbin/mkfs /dev/fd0 • pˇripojen´ı unixovsk´e diskety do syst´emu soubor˚ u mount /mnt/floppy ls /mnt/floppy cp file /mnt/floppy cp /mnt/floppy/f1 . umount /mnt/floppy nevytahovat pˇred odmontov´ an´ım! syst´em soubor˚ u by se mohl poˇskodit (jako HD a reset), syst´em soubor˚ u je plnˇe uchov´an v pamˇeti a s diskem se synchronizuje po jist´em ˇcasov´em intervalu • pˇripojen´ı CD, mount /mnt/cdrom, ls /mnt/cdrom, atd., OS nedovol´ı vysunout CD pokud je pˇrimontovan´e - neplat´ı pro disketu
3.4
S´ıt’ov´ a podpora - NFS
• NFS (network file system) zpˇr´ıstupˇ nuje po s´ıti vzd´alen´e disky, kaˇzd´ y poˇc´ıtaˇc m˚ uˇze sv´e disky zpˇr´ıstupnit ostatn´ım poˇc´ıtaˇc˚ um, vˇetˇsinou dˇel´ a root • df - vyp´ıˇse seznam vˇsech pˇripojen´ ych disk˚ u Filesystem Type kbytes use avail %use Mounted on /dev/root efs 966304 582452 383852 60% / antu:/usr nfs 4250961 1391722 2859239 33% /a/usr galileo:/usr nfs 966304 721540 244764 75% /g/usr siduri:/usr2 nfs 2143564 1747124 396440 82% /usr2 siduri:/usr1 nfs 1913406 1740640 172766 91% /usr1 siduri:/usr nfs 528675 462184 66491 87% /s/usr newton:/usr nfs 966304 708590 257714 73% /n/usr pascal:/usr nfs 455436 266372 189064 58% /p/usr • adres´aˇr vzd´alen´eho disku se pripoj´ı na adres´aˇr na lok´aln´ım disku • soubor /etc/exports urˇcuje kter´ ym poˇc´ıtaˇc˚ um bude zpˇr´ıstupnˇen jak´ y adres´aˇr lok´aln´ıho disku /usr -anon=-1,access=antu.fjfi.cvut.cz:lilit.fjfi.cvut.cz:\ siduri.fjfi.cvut.cz:pascal.fjfi.cvut.cz:newton.fjfi.cvut.cz:\ galileo.fjfi.cvut.cz:gauss.fjfi.cvut.cz:snehurka.fjfi.cvut.cz:\ popelka.fjfi.cvut.cz • pˇr´ıkaz exportfs -av zpˇr´ıstupn´ı lok´ aln´ı disky • soubor /etc/fstab urˇcuje kter´e disky se kam pˇripoj´ı /dev/root / efs rw,quota,raw=/dev/rroot 0 0 siduri:/usr /s/usr nfs rw,quota,hard,intr,bg,private,actimeo=120 0 0 siduri:/usr1 /usr1 nfs rw,quota,hard,intr,bg,private,actimeo=120 0 0 siduri:/usr2 /usr2 nfs rw,quota,hard,intr,bg,private,actimeo=120 0 0 lilit:/usr /l/usr nfs rw,quota,hard,intr,bg,private,actimeo=120 0 0 pascal:/usr /p/usr nfs rw,quota,hard,intr,bg,private,actimeo=120 0 0 newton:/usr /n/usr nfs rw,quota,hard,intr,bg,private,actimeo=120 0 0 galileo:/usr /g/usr nfs rw,quota,hard,intr,bg,private,actimeo=120 0 0 gauss:/usr /gs/usr nfs rw,quota,hard,intr,bg,private,actimeo=120 0 0 antu:/usr /a/usr nfs rw,quota,hard,intr,bg,private,actimeo=120 0 0 • mount - vykon´ a pˇripojen´ı, argumentem bud’ -h poˇc´ıtaˇc pak pˇripoj´ı vˇsechny disky z tohoto poˇc´ıtaˇce, nebo adres´aˇr pak pˇripoj´ı adres´ aˇr • umount - zruˇs´ı pˇripojen´ı • pˇri bootu se automaticky pˇripoj´ı disky podle souboru /etc/fstab
4
J´ adro • pˇr´ıstup k technick´emu vybaven´ı, nelze j´ıt pˇr´ımo na technick´e vybaven´ı, j´adro odstiˇ nuje uˇzivatele • uˇzivatelsk´ y pˇr´ıstup - vol´ an´ı j´ adra • spr´ava – – – –
4.1
proces˚ u syst´emu soubor˚ u komunikac´ı mezi procesy s´ıt´ı
Procesy
• obsazen´ı pamˇeti procesu – textov´ y segment - vlastn´ı program – datov´ y segment - data programu – z´asobn´ık • textov´ y segment jednoho programu je v pamˇeti jen jednou i kdyˇz je spuˇstˇen dan´ y program v´ıcekr´at • proces vytv´aˇr´ı j´ adro, kter´e spravuje svoji tabulku proces˚ u • vol´an´ı j´adra fork (vidliˇcka) vytvoˇr´ı identick´ y proces
• • • •
vol´an´ı j´adra exec pˇrep´ıˇse volaj´ıc´ı proces nov´ ym programem kaˇzd´ y proces m´ a svoje jedineˇcn´e ˇc´ıslo PID (process identification), vlastn´ıka, prioritu, rodiˇce stromov´a struktura proces˚ u start syst´emu (boot) – proces swapper (sched) – proces init ∗ pˇrep´ın´ au ´rovnˇe syst´emu - jednouˇzivatelsk´a, v´ıceuˇzivatelsk´a ∗ startuje ˇradu dalˇs´ıch syst´emov´ ych proces˚ u (getty,lpsched, nfsd, inetd,cron,...)
• vstup uˇzivatele, getty – shell • proces d´emon - probouz´ı se na z´ akladˇe nˇejak´e akce, nebo periodicky • stavy procesu – – – – –
4.2
bˇeˇz´ıc´ı - uˇzivatelsk´ au ´roveˇ n volaj´ıc´ı j´ adro - supervizorov´ au ´roveˇ n, vol´an´ı j´adra pˇreruˇsen´ y sp´ıc´ı odsunut´ y v odkl´ adac´ı oblasti (swap)
Swap
• odkl´adac´ı oblast, pokud nestaˇc´ı RAM • cel´a pamˇet’ rozdˇelena na str´ anky (4 kB, nebo jinak) • kaˇzd´a str´anka m˚ uˇze b´ yt – v pamˇeti (RAM) – v odkl´adac´ı oblasti • nˇekter´e str´anky nesm´ı b´ yt odloˇzeny (j´ adro, swapper) • pˇresuny str´anek mezi RAM a swap obstar´ av´a swapper, – nepostaˇcuje RAM – nˇekter´e str´ anky odloˇz´ı, ot´azka v´ ybˇeru (priorita procesu, kdy naposledy pˇresunuta) – bˇeˇz´ıc´ı proces potˇrebuje odloˇzenou str´ anku – str´anku pˇresune do RAM
4.3
Souˇ casn´ y bˇ eh proces˚ u
• j´adro nech´a jeden proces bˇeˇzet maxim´ alnˇe ∆t ˇcasu CPU (vˇetˇsinou menˇs´ı neˇz 1/50 s) • pozastaven´ı bˇehu procesu – vol´an´ı j´adra - napˇr. ˇcten´ı – potˇrebuje odloˇzenou str´ anku – pˇreruˇs´ı ho j´ adro • na z´akladˇe dynamick´e priority procesu, kter´a jsou vypoˇctena z uˇzivatelsk´e priority a spotˇrebovan´eho CPU ˇcasu • uˇzivatelsk´a priorita (0-39), menˇs´ı hodnota znamen´a vˇetˇs´ı prioritu, standardn´ı priorita 20 • procesy – syst´emov´e maj´ı prioritu ≤ 20 – uˇzivatelsk´e maj´ı prioritu ≥ 20 • zmˇena uˇzivatelsk´e priority - nice, renice
4.4
Komunikace mezi procesy
• sign´aly Name Value Default Event ______________________________________________________ SIGHUP 1 Exit Hangup SIGINT 2 Exit Interrupt SIGQUIT 3 Core Quit SIGILL 4 Core Illegal Instruction SIGTRAP 5 Core Trace/Breakpoint Trap
SIGABRT 6 Core Abort SIGEMT 7 Core Emulation Trap SIGFPE 8 Core Arithmetic Exception SIGKILL 9 Exit Killed SIGBUS 10 Core Bus Error SIGSEGV 11 Core Segmentation Fault SIGSYS 12 Core Bad System Call SIGPIPE 13 Exit Broken Pipe SIGALRM 14 Exit Alarm Clock SIGTERM 15 Exit Terminated SIGUSR1 16 Exit User Signal 1 SIGUSR2 17 Exit User Signal 2 SIGCHLD 18 Ignore Child Status Changed SIGPWR 19 Ignore Power Fail/Restart SIGWINCH 20 Ignore Window Size Change SIGURG 21 Ignore Urgent Socket Condition SIGPOLL 22 Ignore Pollable Event SIGSTOP 23 Stop Stopped (signal) SIGTSTP 24 Stop Stopped (user) SIGCONT 25 Ignore Continued SIGTTIN 26 Stop Stopped (tty input) SIGTTOU 27 Stop Stopped (tty output) SIGVTALRM 28 Exit Virtual Timer Expired • kill - pos´ıl´a sign´ al • signal - definuje jak proces reaguje na pˇr´ıchod sign´alu • roura (pipe) - aa — bb – definuje oblast v pamˇeti, do kter´e se ukl´ad´a v´ ystup aa a ze kter´e ˇcte vstup bb – aa poˇck´a pokud potˇrebuje ps´ at a oblast je jiˇz pln´a – bb poˇck´a, kdyˇz potˇrebuje ˇc´ıst a oblast je pr´azdn´a • IPC (Inter Process Communication) - pojmenovan´a roura, pˇred´av´an´ı zpr´av, sd´ılen´a data, semafory • schr´anky (sockets) - komunikace v r´ amci s´ıt´ı
S´ıt’ov´ e sluˇ zby
5
• lok´aln´ı poˇc´ıtaˇcov´e s´ıtˇe (LAN) • rozlehl´e poˇc´ıtaˇcov´e s´ıtˇe (WAN) • z´akladn´ı sluˇzby – – – – –
5.1
sd´ılen´ı technick´ ych zaˇr´ızen´ı (disky, tisk´ arny) pˇr´ıstup na ostatn´ı poˇc´ıtaˇce (telnet, rlogin) pˇrenos zpr´ av (e-mail, news) pˇrenos soubor˚ u (NFS, ftp, www) spr´ava s´ıtˇe (DNS)
Adresy a protokoly
• tˇri typy adres – hardwarova adresa – IP adresa – dom´enov´a adresa • protokoly TCP/IP (Transmission Control Protocol/ Internet Protocol) • vrstva hardware • vrstva s´ıt’ov´eho rozhran´ı – Ethernet (Ethernet v2, IEEE 802.x) – rychlejˇs´ı - sklenˇen´ a vl´ akna (FDDI, ATM)
– pomalejˇs´ı - dvoubodov´e s´eriov´e linky (PPP, SLIP) • internetov´a vrstva – – – –
IP (Internet Protocol) nespojovan´ y pˇrenos datagram˚ u ARP (Address Resolution Protocol) z´ısk´an´ı hardwarov´e adresy z IP RARP (Reserse Address Resolution Protocol) z´ısk´an´ı IP adresy z hardwarov´e ICMP (Internet Control Message Protocol) chybov´e a ˇr´ıd´ıc´ı zpr´avy router˚ u
• transportn´ı vrstva – TCP (Transmission Control Protocol) spojovan´a (potvrzovan´a) sluˇzba – UDP (User Datagram Protocol) nespojovan´a sluˇzba • aplikaˇcn´ı vrstva – – – – – – – – – – –
Telnet pˇr´ıstup ke vzd´ alen´ ym poˇc´ıtaˇc˚ um SMTP (Simple Mail Transfer Protocol) e-mail FTP (File Transfer Protocol) pˇrenos soubor˚ u NFS (Network FIle System) sd´ılen´ı soubor˚ u RPC (Remote Procedure Call) vol´ an´ı vzd´alen´ ych procedur DNS (Domain Name System) mapov´an´ı dom´enov´ ych a IP adres BootP (Bootstrap Protocol) z´ısk´ an´ı lok´aln´ı IP adresy pˇri zav´aden´ı OS NTP (Network Time Protocol) synchronizace ˇcasu Finger informace o uˇzivateli NNTP (Network News Transfer Protocol) pˇrenos news atd.
• zapouzdˇren´ı dat v TCP/IP vrstvy aplikaˇcn´ı transportn´ı internetov´a s´ıt’ov´e rozhran´ı hardware
IP header Ethernet header
aplikaˇcn´ı data TCP header TCP data IP data Ethernet data
CRC
• dokumenty RFC (Request For Comments) obsahuj´ı detailn´ı technick´e popisy protokol˚ u, napˇr. RFC2821 SMTP http://www.faqs.org
5.2
Lok´ aln´ı poˇ c´ıtaˇ cov´ e s´ıtˇ e
• LAN (Local Area Network) • nejˇcastˇeji Ethernet 10 Mbit/s, Token Ring, Apple Talk, Fast Ethernet (100 Mbit/s) • topologie – line´arn´ı, sbˇernice, segment – vˇetven´a – omezen´ı maxim´ aln´ıho poˇctu segment˚ u • aktivn´ı komponenty – repeater (opakovaˇc, hub) - hardwarov´ a vrstva – bridge, switch (most, pˇrep´ınaˇc) - vrstva s´ıt’ov´eho rozhran´ı – router (smˇerovaˇc) - internetov´ a vrstva • kabel´aˇz – – – –
tenk´ y Ethernet, 10Base2, BNC konektory, sbˇernice, 185/300 m tlust´ y Ethernet, 10Base5, AUI konektory, sbˇernice, 500 m kroucen´a dvoulinka, 10BaseT, 100BaseT, TP (Twisted Pair) konektory, 2 body, 100 m svˇeteln´e vl´ akno, 2 body, nˇekolik km
• Ethernet pracuje na b´ azi sbˇernice – vys´ılaj´ıc´ı karta
– pˇrij´ımaj´ıc´ı karta • kaˇzd´a sit’ov´a karta m´ a jedineˇcnou hardwarovou adresu (na svˇetˇe!) - hexadecim´aln´ı ˇc´ıslo s 12 ciframi tj. celkem 1612 = 248 > 2 1014 napˇr. 00 00 c0 0f 30 40 • paket - z´akladn´ı jednotka pro pˇrenos informace – hlaviˇcka - odes´ılatel, adres´at (hardwarov´e adresy) – vlastn´ı data • kaˇzd´a karta pˇrij´ım´ a vˇsechny pakety na s´ıti a poˇc´ıtaˇci pˇred´av´ a pakety se svoj´ı adresou • poˇzadavek od poˇc´ıtaˇce na vysl´ an´ı paketu – karta se pod´ıv´ a jestli pr´ avˇe nevys´ıl´ a nˇekter´a jin´a karta – pokud ne tak vyˇsle paket • m˚ uˇze doch´azet ke koliz´ım - 2 karty vys´ılaj´ı najednou • po kolizi vys´ıl´ a karta znovu • broadcast - paket urˇcen´ y vˇsem kart´ am
5.3
Rozlehl´ e s´ıtˇ e - Internet
• • • • • •
WAN (Wide Area Network), propojen´ı lok´ aln´ıch s´ıt´ı LAN speci´aln´ımi zaˇr´ızen´ımi - routery(smˇerovaˇce) s´ıt’ Internet, podnikov´e s´ıtˇe, arm´ adn´ı s´ıtˇe kaˇzd´ y poˇc´ıtaˇc m´ a svoji dom´enovou adresu (jednu nebo v´ıce), napˇr. popelka.fjfi.cvut.cz kaˇzd´e dom´enov´e adrese odpov´ıd´ a jedna IP adresa, napˇr. 147.32.6.14 kaˇzd´ y poˇc´ıtaˇc m´ a nejˇcastˇeji jednu IP adresu (nebo v´ıce) IP adresa je ˇctveˇrice cel´ ych ˇc´ısel z (0,255) tj. celkem 2564 = 23 2 > 4 109 chyst´a se pˇrechod na IP6, tj. IP adresa tvoˇren´a ˇsestic´ı cel´ ych ˇc´ısel • hierarchick´a organizace dom´en • n´azvy dom´en nejniˇzˇs´ı u ´rovnˇe – v USA podle typu organizace (edu,gov,com,org) – jinde podle st´ atu (cz,de,fr,uk,it) • kaˇzd´e dom´enˇe druh´e a vyˇsˇs´ı u ´rovnˇe pˇr´ısluˇs´ı jist´a mnoˇzina IP adres, napˇr. dom´enˇe cvut.cz pˇr´ısluˇs´ı IP dom´ena typu B 147.32.*.*, dom´enˇe fjfi.cvut.cz pˇr´ısluˇs´ı IP dom´eny typu C 147.32.5.*,147.32.6.*, 147.32.7.*, 147.32.8.*, .... • m´ısto IP dom´en mohou b´ yt mnoˇziny typu i.j.k.[n-m], atp. • mnoˇziny IP adres se pˇridˇeluj´ı podle fyzick´e polohy LAN, napˇr. 147.32.5.* je Bˇrehov´a, 147.32.8.* je Trojanova • routery v uzlech s´ıtˇe tˇr´ıd´ı pakety podle IP adresy adres´ata, routery maj´ı svoji IP adresu, kaˇzd´ y router m´a alespoˇ n dvˇe s´ıt’ov´ a rozhran´ı • nejjednoduˇsˇs´ı router m´ a jedno rozhran´ı pˇripojen´e do lok´aln´ı LAN a druh´e napojeno na internet, zn´a mnoˇzinu lok´aln´ıch IP adres a vˇsechny pakety, kter´e maj´ı jin´eho IP adres´ata smˇeˇruje na druh´e rozhran´ı • sloˇzitˇejˇs´ı routery - u kaˇzd´eho rozhran´ı kromˇe posledn´ıho maj´ı seznam IP adres, kter´e na toto rozhran´ı mohou pos´ılat, vˇse ostatn´ı pos´ılaj´ı na posledn´ı rozhran´ı • kaˇzd´e dom´enˇe pˇr´ısluˇs´ı nameserver, kter´ y zprostˇredkov´av´a konverze mezi dom´enovou adresou a IP adresou
5.4 • • • • • • • •
S´ıt’ov´ a konfigurace poˇ c´ıtaˇ ce lok´aln´ı IP adresa, napˇr. 147.32.6.14 lok´aln´ı dom´enov´ a adresa, napˇr. popelka.fjfi.cvut.cz IP adresa lok´aln´ı s´ıtˇe, napˇr. 147.32.6.0 dom´enov´a adresa lok´ aln´ı s´ıtˇe, napˇr. fjfi.cvut.cz IP adresa pro netmask, napˇr. 255.255.255.0 IP adresa pro broadcast, napˇr. 147.32.6.255 IP adresa pro lok´ aln´ı br´ anu (gateway), napˇr. 147.32.6.1 IP adresa name serveru (DNS, prim´ arn´ı, sekund´arn´ı), napˇr. 147.32.6.4
5.5
S´ıt’ov´ e sluˇ zby
• sd´ılen´ı s´ıt’ov´ ych disk˚ u • jednotliv´e pˇr´ıkazy 5.5.1 • • • •
5.5.2
ssh bezpeˇcn´e vzd´alen´e pˇripojen´ı (secure shell), nahrazuje telnet a rlogin, kter´e spojen´ı nek´oduj´ı ssh poˇ c´ıtaˇ c se pˇr´ıpoj´ım pod stejn´ ym jm´enem ssh uˇ zivatel@poˇ c´ıtaˇ c nebo ssh -l uˇ zivatel poˇ c´ıtaˇ c se pˇr´ıpoj´ım pod jin´ ym jm´enem v souboru .rhosts je seznam poˇc´ıtaˇc˚ u (jeden poˇc´ıtaˇc na jednu ˇr´adku, napˇr. newton.fjfi.cvut.cz) ze kter´ ych se mohu pˇripojovat v r´ amci uˇcebny bez hesla scp
• bezpeˇcn´ y pˇrenos soubor˚ u, nahrazuje ftp • scp soubor uˇ zivatel@poˇ c´ıtaˇ c:soubor pˇrenese soubor na vzd´alen´ y poˇc´ıtaˇc, pt´a se na heslo na vzd´alen´em poˇc´ıtaˇci • scp uˇ zivatel@poˇ c´ıtaˇ c:soubor . pˇrenese soubor ze vzd´alen´eho poˇc´ıtaˇce, pt´a se na heslo na vzd´alen´em poˇc´ıtaˇci 5.5.3
finger
• informace o uˇzivateli finger user@computer • kdy byl naposledy pˇripojen • obsah soubor˚ u z domovsk´eho adres´ aˇre – .plan - nejˇcastˇeji adresa, telefon, ... – .project - na ˇcem pracuje 5.5.4
write
• p´ıˇse na obrazovku jin´eho uˇzivatele write user • ukonˇc´ı se Ctrl-d (EOF) • lze zak´azat psan´ı na sv˚ uj termin´ al mesg n • znovu povolit mesg y 5.5.5
talk
• interaktivn´ı komunikace s jin´ ym uˇzivatelem talk user@computer • druh´ y uˇzivatel odpov´ı stejnˇe • ukonˇcen´ı Ctrl-c 5.5.6
ping
• kontrola s´ıt’ov´eho spojen´ı ping computer • opakovanˇe vys´ıl´ a pakety a mˇeˇr´ı za jak dlouho se vr´at´ı • poˇc´ıt´a poˇcet ztracen´ ych paket˚ u • ukonˇcen´ı Ctrl-c • pro s´ıt’ov´e spr´avce traceroute computer vypisuje vˇsechny routery a poˇc´ıtaˇce na cestˇe ke vzd´alen´emu poˇc´ıtaˇci
5.5.7
nslookup
• prostˇrednictv´ım komunikace s name serverem (DNS) umoˇzn ˇuje pˇrev´adˇet dom´enovou adresu na IP adresu a naopak nslookup d´a vlastn´ı prompt • na vstupu potom dom´enov´ a adresa nebo IP adresa • ˇrada dalˇs´ıch moˇznost´ı • ukonˇc´ı se Ctrl-d 5.5.8
mail
• elektronick´a poˇsta • pos´ıl´an´ı zpr´av mail user@computer Subject: - n´azev zpr´ avy nˇekdy i cc: carbon copy text zpr´avy • zpr´avu ukonˇc´ım a odeˇslu “.” na 1. pozici ˇr´ adku • zpr´avu ukonˇc´ım a zruˇs´ım Ctrl-c Ctrl-c • ˇcten´ı zpr´av mail vyp´ıˇse seznam hlaviˇcek zpr´ av, zpr´ avy jsou oˇc´ıslov´any pˇr´ıkazy n – n je ˇc´ıslo, ˇcte zpr´ avu ˇc´ıslo n x – ukonˇc´ı mail, nezmˇen´ı mailbox q – (quit) ukonˇc´ı mail, z mailbox odstran´ı smazan´e zpr´avy, standardnˇe pˇresune z mailbox pˇreˇcten´e zpr´avy do souboru mbox (lze zmˇenit) d – (delete) maˇze atku´ aln´ı zpr´ avu d5 – maˇze 5. zpr´ avu h – (headers) vyp´ıˇse seznam hlaviˇcek r – (reply) odpov´ı na aktu´ aln´ı zpr´ avu s file – (save) uschov´ a zpr´ avu v souboru file – atd. • automatick´e pˇresmˇerov´an´ı poˇsty (forward), do souboru .forward v home adres´aˇri uloˇz´ıme adresu kam se m´ a poˇsta pˇresmˇerovat
5.6
S´ıt’ a X-windows
• sed´ım u poˇc´ıtaˇce computer1 a chci spustit X-program na poˇc´ıtaˇci computer2 • v termin´alu na poˇc´ıtaˇci computer2 mus´ım naplnit promˇennou DISPLAY setenv DISPLAY computer1:0 • v termin´alu na poˇc´ıtaˇci computer1 mus´ım povolit pˇr´ıstup na display xhost +computer2 pak teprve mohu spustit X-program • povolen´ı pˇr´ıstupu z libovoln´eho poˇc´ıtaˇce xhost + • zak´az´an´ı pˇr´ıstupu xhost -
5.7
Programov´ an´ı s´ıt’ov´ ych aplikac´ı
• nejjednoduˇsˇs´ı pˇres socket • po otevˇren´ı se ˇcte a p´ıˇse jako do souboru
6
Shell • shell = ulita • interpretr pˇr´ıkaz˚ u sh csh tcsh ksh bash
6.1
Bourne shell, nejstarˇs´ı a nejjednoduˇsˇs´ı C shell, asi nejuˇz´ıvanˇejˇs´ı vylepˇsen´ y C shell Korn shell Bourne again shell, rozˇs´ıˇren´ y sh
Z´ aklady
• pˇr´ıkazov´a ˇr´adka pˇ r´ıkaz [arg1] [arg2] ... [argn] volba (option) - argument zaˇc´ınaj´ıc´ı na “-”, volby jsou nejdˇr´ıve • opravy na pˇr´ıkazov´e ˇr´ adce, opravy s pouˇzit´ım ˇsipek umoˇzn ˇuje jen tcsh, bash nebo ksh, jinak sloˇzit´e • doplnˇen´ı jm´ena tabel´ atorem podporuje tcsh a bash • pˇr´ıkaz m˚ uˇze b´ yt – pˇr´ıkaz shellu – program uloˇzen´ y v souboru (i pˇr´ıkazy OS) → nov´ y proces ∗ bin´arn´ı program → nov´ y proces ∗ skript - program (zdrojov´ y) v jazyku shellu → nov´ y shell, kter´ y skript vykon´a • standardn´ı vstup a v´ ystup, shell je prostˇredn´ıkem st. vstup → program → st. a chybov´ y v´ ystup v z´akladn´ım reˇzimu st. vstup, st. v´ ystup i chybov´ y v´ ystup je smˇerov´an na termin´al • termn´al je soubor - device, napˇr. /dev/tty4 • pˇresmˇerov´an´ı (redirekce) – v´ ystupu program [argumenty] > soubor, pˇrep´ıˇse soubor!! – vstupu program [argumenty] < soubor – vstupu i v´ ystupu program [argumenty] < vstup > v´ ystup
•
•
•
•
Pˇr. spojen´ı 2 soubor˚ u do jednoho cat file1 file2 > file pˇripojen´ı standardn´ıho v´ ystupu k souboru >> date > whoson cat whoson who >> whoson cat whoson roura (pipe) | program1 [args1] | program2 [args2] je ekvivalentn´ı program1 [args1] > temp program2 [args2] < temp rm temp nicm´enˇe pˇri rouˇre bˇeˇz´ı oba programy najednou cat file | more spuˇstˇen´ı programu na pozad´ı (backgound) - & pˇred Enter, kter´ ym ukonˇcujeme pˇr´ıkaz find / -name latex -print & ps ukonˇcen´ı programu – na popˇred´ı (foreground) ctrl-c – na pozad´ı (background), ps najde PID (cel´e ˇc´ıslo), kill PID
6.2 6.2.1 • • • • •
Bourne shell sh Promˇ enn´ e v sh pˇriˇrazen´ı promˇ enn´ a = hodnota odkaz na promˇenn´e $promˇ enn´ a promˇenn´e definov´ any jen v dan´em shellu zpˇr´ıstupnˇen´ı promˇenn´ ych pro potomky, export promˇ enn´ a speci´aln´ı promˇenn´e
$n $HOME $PATH –
argumenty, $0 je jm´eno vyhodnocovan´eho skriptu, $1 je prvn´ı argument domovsk´ y adres´ aˇr seznam cest atd.
• seznam vˇsech promˇenn´ ych, set • ‘pˇr´ıkaz‘ - vyhodnot´ı pˇr´ıkaz a vr´ at´ı jeho stdout sh pocitac=‘hostname‘ echo $pocitac ctrl-d 6.2.2
ˇ ıd´ıc´ı pˇ R´ r´ıkazy sh
• podm´ınˇen´e pˇr´ıkazy if testovac´ı pˇr´ıkaz then pˇr´ıkazy fi if testovac´ı pˇr´ıkaz then pˇr´ıkazy else pˇr´ıkazy fi if testovac´ı pˇr´ıkaz then pˇr´ıkazy elif testovac´ı pˇr´ıkaz then pˇr´ıkazy else pˇr´ıkazy fi • cykly for identifik´ator in seznam argument˚ u do pˇr´ıkazy done while testovac´ı pˇr´ıkaz do pˇr´ıkazy done until testovac´ı pˇr´ıkaz do pˇr´ıkazy done • pˇreruˇsen´ı cyklu, break cyklus ukonˇc´ı, continue skoˇc´ı na done a pokraˇcuje v cyklu • pˇr´ıklad sh for i in * do echo $i done ctrl-d • case case testovac´ı ˇretˇezec in
vzor1 ) pˇr´ıkazy1 ;; vzor2 ) pˇr´ıkazy2 ;; ... esac
6.3 6.3.1
C shell csh Historie
• historie - pamatuje si pˇredchoz´ı pˇr´ıkazy, history vyp´ıˇse pˇredchoz´ı pˇr´ıkazy, jejich poˇcet je d´an promˇennou history • kaˇzd´ y pˇr´ıkaz m´ a sv´e poˇradov´e ˇc´ıslo • znovuspoˇstˇen´ı pˇr´ıkaz˚ u shellu !! !5 !p – 6.3.2
pˇredchoz´ı pˇr´ıkaz pˇr´ıkaz ˇc. 5 posledn´ı pˇr´ıkaz zaˇc´ınaj´ıc´ı na p ˇsipky nahoru, dolu v tcsh, tak´e moˇznost opravov´an´ı
Aliasy
• aliasy - substituce ˇretˇezc˚ u ve jm´enu pˇr´ıkazu na pˇr´ıkazov´e ˇr´adce, jsou lok´aln´ı v dan´em shellu (ve skriptu plat´ı jen ty, kter´e jsou v nˇem definov´ any) alias identifik´ ator ˇ retˇ ezec v dalˇs´ıch pˇr´ıkazech je indentifik´ ator na m´ıstˇe jm´ena pˇr´ıkazu nahrazen ˇretˇezcem, n´ahrada je prov´adˇena opakovanˇe dokud lze pouˇz´ıt nˇejak´ y alias alias dir ls dir alias ll ls -l ll alias lla ll -a lla – seznam alias˚ u, alias – ruˇsen´ı aliasu, unalias lla 6.3.3
Promˇ enn´ e
• promˇenn´e - ˇretˇezce – deklarace promˇenn´a jen v dan´em shellu set name = fred promˇenn´a dostupn´ a i v procesech potomc´ıch setenv name1 john – odkaz na promˇennou, $name echo $name – seznam vsech promˇenn´ ych, set lok´ aln´ı promˇenn´e, env “environment” promˇenn´e dostupn´e i v potomc´ıch – zruˇsen´ı promˇenn´e, unset name, unsetenv name1 • pole promˇenn´ ych set colors = (red green blue) echo $colors echo $colors[2] echo $colors[2-3] set $colors[3] = black echo $colors[3] • ˇc´ıseln´e promˇenn´e, pˇr´ıkaz @ – oper´atory jazyka C @ count = (5 + 2)
echo $count @ count++ echo $count – ˇc´ıseln´a pole • specieln´ı tvary promˇenn´ ych $#jmeno obsahuje poˇcet prvk˚ u pole jmeno $?jmeno je 1 pokud je jmeno promˇenn´ a, jinak je 0 • promˇenn´e C shellu $argv $argv[0 $argv[1 $#argv $cspath $history $home $path
$prompt $shell $status $$ $user –
argumenty pˇr´ıkazu, kter´ y spustil shell ] jm´eno programu, kter´ y byl vol´ an ] prvn´ı argument vol´ an´ı poˇcet prvk˚ u argv seznam cest, je prohled´ av´ an pokud cd zad´ame jm´eno adres´aˇre, kter´ y se nenach´az´ı v aktu´aln´ım adres´aˇri poˇcet pˇr´ıkaz˚ u v historii cesta domovsk´eho adres´ aˇre cesty k program˚ um, kter´e se prohled´ avaj´ı po zad´an´ı pˇr´ıkazu, kter´ y nen´ı pˇr´ıkazem shellu, aktualn´ı adres´aˇr se neprohled´ av´ a pokud v $path nen´ı . set path = (. $path ˜/bin) nastaven´ı promptu cesta k shellu, kter´ y byl spustˇen v´ ystupn´ı status posledn´ıho pˇr´ıkazu PID ˇc´ıslo dan´eho shellu jm´eno uˇzivatele atd.
• promˇenn´e shellu funguj´ıc´ı jako pˇrep´ınaˇce, promˇenn´a je nebo nen´ı nadefinov´ana $ignoreeof ctrl-d neukonˇc´ı shell $noclobber redirekc´ı > nepˇrep´ıˇsi soubor, >! pˇrep´ıˇse $noglob z´astupn´e znaky nebudou expandov´ any 6.3.4
Z´ astupn´ e znaky, v´ıce pˇ r´ıkaz˚ u
• z´astupn´e znaky ? * ˜ ˜user [
libovoln´ y znak libovoln´a posloupnost znak˚ u (vˇcetnˇe .) m˚ uj home adres´ aˇr home adres´ aˇr uˇzivatele user ] jeden znak z mnoˇziny znak˚ u [56] [0-9] [a-m]
• nˇekolik pˇr´ıkaz˚ u na jednom pˇr´ıkazov´em ˇr´ adku a|b|c roura a&b&c a,b na pozad´ı, c na popˇred´ı a&b&c& a,b,c na pozad´ı a;b;c a,b,c postupnˇe (a;b)& c (a;b)& (c;d)& • pˇresmˇerov´an´ı chybov´eho v´ ystupu, pˇ r´ıkaz >& errfile 6.3.5
ˇ ızen´ı u R´ ´ loh
• kontrola u ´loh, prac´ı (job), kaˇzd´ a pr´ ace bˇeˇz´ı na popˇred´ı, bˇeˇz´ı na pozad´ı nebo je pozastaven´a, na popˇred´ı m˚ uˇze bˇeˇzet jen jedna u ´loha (vazba std. vstupu a v´ ystupu na termin´al) ctrl-z pozastav´ı pr´ aci na popˇred´ı ctrl-c ukonˇc´ı pr´aci na popˇred´ı (ˇcasto) fg [%n] (foreground) pˇrevede na popˇred´ı [pr´aci ˇc. n] bg [%n] (backgroud) pˇrevede na popˇred´ı [pr´aci ˇc. n] jobs seznam prac´ı dan´eho C shellu s ˇc´ısly
stop %n pozastav´ı pr´ aci ˇc. n bˇeˇz´ıc´ı na pozad´ı kill %n ukonˇc´ı pr´ aci ˇc. n kill n ukonˇc´ı proces s PID n (ten nemus´ı b´ yt prac´ı) 6.3.6
Skripty
• skripty – pokud je 1. znakem souboru # vyhodnocuje csh jinak sh – nebo zad´ an shell na 1. ˇr´ adce, #!/bin/sh • speci´aln´ı skripty csh v domovsk´em adres´ aˇri .login vyhodnocuje se pˇri pˇripojen´ı, env. promˇenn´e .cshrc vyhodnocuje se pˇri spuˇstˇen´ı csh, promˇenn´e, aliasy 6.3.7
ˇ ıd´ıc´ı pˇ R´ r´ıkazy csh
• podm´ınˇen´e pˇr´ıkazy if (v´ yraz) jednoduch´ y pˇr´ıkaz if (v´ yraz) then pˇr´ıkazy endif if (v´ yraz) then pˇr´ıkazy else pˇr´ıkazy endif if (v´ yraz) then pˇr´ıkazy else if (v´ yraz) then pˇr´ıkazy ... else pˇr´ıkazy endif switch (testovac´ı ˇretˇezec) case vzor: pˇr´ıkazy breaksw ... default: pˇr´ıkazy breaksw endsw • cykly foreach indentifik´ ator (seznam argument˚ u) pˇr´ıkazy end while (testovac´ı pˇr´ıkaz) pˇr´ıkazy end 6.3.8
Pˇ r´ıklady csh skript˚ u
• skripty mus´ı b´ yt v adres´ aˇri, kter´ y je v promˇenn´e $path • skript suma n, poˇc´ıt´ a n X i=1
i
•
•
•
•
# Skript suma set n = $argv[1] set i = 1 set sum = 0 while ($i <= $n) @ sum += $i @ i++ end echo ’Soucet je ’$sum skript mmdir, v´ ypis adres´ aˇre, ls # Skript mmdir foreach i (*) echo $i end skript msdir, v´ ypis adres´ aˇre a vˇsech podadres´aˇr˚ u # Skript msdir foreach i (*) if (-d $i) then echo ’Directory ’ $i cd $i msdir cd .. else echo $i endif end skript mndir, poˇcet soubor˚ u v adres´ aˇri a vˇsech podadres´aˇr´ıch # Skript mndir - number of files in dir set num = ‘mmdir | wc -l‘ echo ’Directory ’ ‘pwd‘ ’ has ’ $num ’ files’ foreach i (*) if (-d $i) then cd $i mndir cd .. endif end skript mtree, strom podadres´aˇr˚ u # Skript mtree - dir tree if ($#argv == 0) then set ind = 0 else set ind = $argv[1] endif set str = ’’ set j = 0 while ($j < $ind) # echo $j set str = "\040"$str @ j++ end @ ind++ foreach i (*) if (-d $i) then echo $str $i cd $i mtree $ind
cd .. endif end
7
Ovl´ ad´ an´ı proces˚ u • pro vˇsechny procesy, nejen spuˇstˇen´e z dan´eho shellu
7.1
Stav proces˚ u
• pˇr´ıkaz ps ziˇst’uje stav bˇeˇz´ıc´ıch proces˚ u • bez voleb jen procesy spuˇstˇen´e z dan´eho shellu • volby pro SGI – – – –
-e (everything) vˇsechny procesy -f (full) u ´pln´ y v´ ypis -l (long) dlouh´ y v´ ypis atd.
• volby pro Linux – – – –
-a (all) i procesy jin´ ych uˇzivatel˚ u -x i procesy, kter´e nekontroluje jiˇz ˇz´ adn´ y termin´al -u (user) uˇzivatelsk´ y v´ ypis -l (long) dlouh´ y v´ ypis
• zobrazen´e poloˇzky, sloupce (SGI Linux) – – – – – – – – – –
UID USER jm´eno uˇzivatele PID identifikaˇcn´ı ˇc´ıslo procesu PPID PID rodiˇce STIME START kdy byl proces spuˇstˇen TIME kolik CPU spotˇreboval COMD COMMAND pˇr´ıkaz, kter´ y proces spustil PRI priorita NI hodnota nice SZ SIZE celkov´ a velikost pamˇeti procesu, vˇcetnˇe swap RSS aktualni velikost pamˇeti RAM
• pˇr´ıkaz top (jen SGI) dynamicky zobrazuje procesy, kter´e nejv´ıce uˇz´ıvaj´ı procesor
7.2
Zat´ıˇ zen´ı poˇ c´ıtaˇ ce
• w zat´ıˇzen´ı a kdo je pˇripojen, zat´ıˇzen´ı 0-0.5 je mal´e, zat´ıˇzen´ı kolem 1 znamen´a ˇze bˇeˇz´ı jeden proces, kter´ y potˇrebuje procesor skoro poˇr´ ad, atd. • xload grafick´e zn´ azornˇen´ı • gr osview grafick´e zn´ azornˇen´ı (jen na SGI), volba -a (all) i zat´ıˇzen´ı pamˇeti, grafiky, atd.
7.3 • • • •
7.4
Priority proces˚ u nice pˇ r´ıkaz vykon´ a pˇr´ıkaz se sn´ıˇzenou prioritou, volba -n (n je 1-20) uprav´ı prioritu o n renice n PID zmˇen´ı prioritu jiˇz bˇeˇz´ıc´ıho procesu s id. ˇc´ıslem PID na n uˇzivatel m˚ uˇze prioritu jen zvyˇsovat, tj. proces pobˇez´ı pomaleji sniˇzovat prioritu m˚ uˇze jen root
Spouˇ stˇ en´ı proces˚ u v dan´ y okamˇ zik
• at time [date] po t´e zad´ am pˇr´ıkazy a ukonˇc´ım ctrl-d, time je napˇr. 1530 • nebo at time < file kdyˇz m´ am pˇr´ıkazy v souboru file
8
Editor vi • je na kaˇzd´em unixu, pˇr´ıstupn´ y i na zaˇc´ atku instalace • n´asledn´ık editor˚ u ed a ex, jeho n´ asledn´ıkem je vim • tˇri m´ody ˇcinnosti 1. pˇr´ıkazov´ y – znaky jsou interpretov´ any jako pˇr´ıkazy 2. vkl´adac´ı – vkl´ ad´ an´ı textu – na posledn´ı ˇr´adce INSERT – do nˇeho pomoc´ı pˇr´ıkaz˚ u i,a,c,o,s,A,C,I,O,R,S – z nˇeho zpˇet do pˇr´ıkazov´eho Esc 3. rozˇs´ıˇren´ y pˇr´ıkazov´ y (ex m´ od) – do nˇeho pˇr´ıkazem :, dvojteˇcka se vyp´ıˇse na posledn´ım ˇr´adku, pak se vloˇz´ı rozˇs´ıˇren´ y pˇr´ıkaz ukonˇcen´ y Enter a n´ avrat do pˇr´ıkazov´eho m´odu • spuˇstˇen´ı vi pokus • ukonˇcen´ı – – – –
ZZ s uloˇzen´ım opravovan´eho souboru :q bez uloˇzen´ı souboru :q! bez uloˇzen´ı u zmˇenˇen´eho souboru :w pokus2 uloˇzen´ı souboru pod jin´ ym jm´enem
• pohyb kurzoru – ˇsipkami – vˇetˇsinou funguj´ı h j k l – pokud nefunguj´ı tak ← ↓ ↑ → – w (word) na zaˇc´ atek n´ asleduj´ıc´ıho slova – b (back) na zaˇc´ atek pˇredchoz´ıho slova – 0 na zaˇc´atek ˇr´ adky – $ na konec ˇr´ adky – H (Home) za zaˇc´ atek prvn´ı ˇr´ adky obrazovky – M (Middle) na zaˇc´ atek prostˇredn´ı ˇr´ adky obrazovky – L (Low) na zaˇc´ atek posledn´ı ˇr´ adky obrazovky • pohyb v delˇs´ım souboru – – – –
Ctrl-f (forward) o obrazovku dolu – jako Page Down Ctrl-b (backward) o obrazovku nahoru – jako Page Up 28G (goto) skok na 28. ˇr´ adku G skok na posledn´ı ˇr´ adku souboru
• vkl´ad´an´ı a zmˇeny v souboru – pˇrepnut´ı do vkl´adac´ıho m´odu – – – – – – – – – –
i (insert) n´ asledn´ y text se vkl´ ad´ a pˇred kurzor a (append) n´ asledn´ y text se vkl´ ad´ a za kurzor I (Insert) n´ asledn´ y text se vkl´ ad´ a pˇred prvn´ı znak ˇr´adky A (Append) n´ asledn´ y text se vkl´ ad´ a za posledn´ı znak ˇr´adky R (Replace) n´ asledn´ y text pˇrepisuje od pozice kurzoru r (replace) pˇrep´ıˇse jeden znak s (substitute) pˇrep´ıˇse jeden znak a pˇrepne se do vkl´adac´ıho m´odu u (undo) zruˇs´ı posledn´ı zmˇenu Enter ve vkl´ adac´ım m´ odu pˇrejde na novou ˇr´adku Esc ukonˇc´ı vkl´ ad´ an´ı textu a pˇrejde do pˇr´ıkazov´eho m´odu
• dˇelen´ı s pojov´an´ı ˇr´ adek – i Enter Esc rozdˇel´ı r´ adek v m´ıstˇe kurzoru – J (Join) pˇripoj´ı dalˇs´ı ˇr´ adek k aktu´ aln´ı ˇr´adce – 5J spoj´ı 5 ˇr´ adek • maz´an´ı textu – x maˇze znak pod kurzorem
– – – – –
X maˇze znak pˇred kurzorem dd maˇze aktu´ aln´ı ˇr´ adek 5dd maˇze 5 ˇr´ adek D maˇze vˇse od kurzoru do konce ˇr´ adky p (paste) vloˇz´ı naposled smazan´ y text
• vyhled´av´an´ı ˇretˇezc˚ u – – – –
/jana hled´ a n´ asleduj´ıc´ı v´ yskyt ˇretˇezce “jana” ?josef hled´ a pˇredch´ azej´ıc´ı v´ yskyt ˇretˇezce “josef” n (next) opakuje posledn´ı hled´ an´ı N (Next) opokuje posledn´ı hled´ an´ı v opaˇcn´em smˇeru
• z´amˇena ˇretˇezc˚ u – :/josef/pepa/ (substitute) nahrad´ı prvn´ı v´ yskyt na aktu´aln´ı ˇr´adce – :/josef/pepa/g (global) nahrad´ı vˇsechny v´ yskyty na aktu´aln´ı ˇr´adce – :/josef/pepa/gc (confirm) nahrad´ı vˇsechny v´ yskyty na aktu´aln´ı ˇr´adce s potvrzen´ım y Enter nahrad´ı a Enter pˇreskoˇc´ı – :%s/josef/pepa/g nahrad´ı vˇsechny v´ yskyty v cel´em souboru – :5,18s/josef/pepa/g nahrad´ı vˇsechny v´ yskyty na ˇr´adc´ıch 5-18 • kop´ırov´an´ı a pˇresouv´ an´ı – pˇres nepojmenovanou pamˇet’ (jen v r´ amci jednoho souboru) ∗ yy nebo Y (yank) uloˇz´ı aktu´ aln´ı ˇr´adek do pamˇeti ∗ 5yy uloˇz´ı 5 ˇr´ adek ∗ dd uloˇz´ı aktu´ aln´ı ˇr´ adku a vymaˇze ji ∗ 5dd uloˇz´ı 5 ˇr´ adek a vymaˇze je ∗ p (put) vloˇz´ı text z pamˇeti za aktu´aln´ı ˇr´adku ∗ P (Put) vloˇz´ı text z pamˇeti pˇred aktu´aln´ı ˇr´adku – pˇres pojmenovan´e pamˇeti a-z ∗ ”ayy uloˇz´ı aktu´ aln´ı ˇr´ adku do pamˇeti a ∗ ”b7yy uloˇz´ı 7 ˇr´ adek do pamˇeti b ∗ ”c5dd uloˇz´ı 5 ˇr´ adek do pamˇeti c a vymaˇze je ∗ ”bp vloˇz´ı text z pamˇeti b • pr´ace s v´ıce soubory – – – –
:e pokus3 opravujeme dalˇs´ı soubor :e# n´avrat na pˇredch´ azej´ıc´ı soubor :r pokus4 vloˇzen´ı souboru za aktu´ aln´ı ˇr´adek :w pokus5 uloˇzen´ı pod jin´ ym jm´enem
• pˇr´ıkazy unixu – :cd work zmˇena adres´ aˇre – :sh spuˇstˇen´ı shellu – ukonˇcen´ı Ctrl-d • • • •
makra naˇcten´ı souboru pˇr´ıkaz˚ u source odsazov´ani a zalamov´ an´ı textu nastaven´ı prostˇred´ı – – – – –
9
:set :set :set :set atd.
all vyp´ıˇse nastaven´ı vˇsech voleb vyp´ıˇse zmˇenˇen´e volby number pˇred ˇr´ adky jsou jejich ˇc´ısla nonumber zruˇsen´ı volby – prefix no
Pˇ reklad a ladˇ en´ı • pˇreklad a ladˇen´ı zdrojov´ ych program˚ u
9.1
Pˇ rekladaˇ c C, cc, gcc
• cc je standardn´ı pˇrekladaˇc C • gcc je GNU pˇrekladaˇc C cc [volby] soubory gcc [volby] soubory dˇel´a pˇreklad i linkov´ an´ı, nˇekolik f´ az´ı • extenze – – – – – – –
*.c zdroje v C *.h hlaviˇcky (headr) *.o pˇreloˇzen´ y objekt modul *.s zdroje v asembleru, nebo pˇreloˇzen´e do asembleru *.a statick´e knihovny *.so dynamick´e knihovny *.f zdroje ve Fortranu
• pˇreklad *.c → *.o *.c → *.s → *.o *.s → *.o • linkov´an´ı *.o → spustiteln´ y soubor (bin´ arn´ı) *.o, *.a, *.so → spustiteln´ y soubor (bin´ arn´ı) • vytvoˇren´ı knihovny *.o → *.a *.o, *.a → *.so • standardn´ı jm´ena soubor˚ u – a.out bin´ arn´ı spustiteln´ y soubor – core obraz pamˇeti po pˇreruˇsen´ı nˇekter´ ym ze sign´al˚ u (napˇr. pˇreteˇcen´ı, dˇelen´ı nulou, segmentation fault) • volby – – – – – – –
-c (compile) jen pˇreklad, ne linkov´ an´ı -o file (output) v´ ystup bude ve file a ne v a.out -O (optimize) optimalizace -g (debug) pˇreklad pro ladˇen´ı -S (asembler) pˇreklad jen do asembleru -larg (library) pˇri limkov´ an´ı pouˇz´ıt knihovnu libarg, jm´ena knihoven lib*.a, lib*.so -L path (library) cesta do adres´ aˇre kde jsou knihovny, standardn´ı cesty ke knihovn´am prohled´av´a i bez t´eto volby – -I path (include) cesta do adres´ aˇre kde jsou soubory s hlaviˇckami (headry) *.h – -C generuje k´ od pro kontrolu index˚ u pol´ı bˇehem bˇehu programu • pˇr´ıklad cc pp.c p1.o -lm • pˇr´ıklad se zdrojov´ ym souborem cc count.c soubor count.c #include <stdio.h> #define PERIOD
’.’
main() { char c; int count; for (count=0; (c=getchar ()) != PERIOD; ) count++; printf("Number of characters is %d\n", count);
}
9.2
Pˇ rekladaˇ c Fortran, f77
• pˇrekladaˇc Fortran 77 f77 [volby] soubory • volby stejn´e jako cc • st´ale hojnˇe pouˇz´ıvan´ y pro numeriku, rozs´ ahl´e knihovny, pˇrekladaˇce pro vektorov´e superpoˇc´ıtaˇce
9.3
Ladˇ en´ı, dbx, gdb
• debuger pro ladˇen´ı dbx [volby] soubor agrs gdb [volby] soubor args GNU debuger • “soubor” je bin´ arn´ı soubor pˇreloˇzen´ y s volbou -g • pokud existuje soubor “core” naˇcte se do pamˇeti a debuger se nastav´ı jako by program bˇeˇzel pod n´ım • pˇr´ıkazy – – – – – – –
r (run) srust´ı program n (next) vykon´ a dalˇs´ı ˇr´ adek programu (nevstupuje do procedur) s (step) vykon´ a dalˇs´ı ˇr´ adek programu (vstupuje do procedur) p x (print) vyp´ıˇse hodnotu promˇenn´e x l (list) vyp´ıˇse ˇc´ ast programu c (continue) pokraˇcuj ve vyhodnocov´ an´ı where vyp´ıˇse seznam volan´ ych procedur
• dalˇs´ı moˇznosti – – – – –
9.4 • • • • •
•
• • •
break point - zastav´ı se pˇri kaˇzd´em pr˚ uchodu trasov´an´ı promˇenn´ ych - zastav´ı pˇri kaˇzd´e zmˇenˇe promˇenn´ ych trasov´an´ı procedur - zastav´ı se pˇri kaˇzd´em vstupu do dan´e procedury zastaven´ı pˇri sign´ alech zastaven´ı pˇri splnˇen´ı zadan´ ych podm´ınek
Make utilita pro pˇreklad velk´ ych bal´ık˚ u pˇri opravˇe pouze jednoho souboru pˇrekl´ ad´ a jen tento soubor pˇr´ıkazy pro make uloˇzeny standardnˇe v souboru makefile nebo Makefile zad´avaj´ı z´avislost jednotliv´ ych soubor˚ u na sobˇe a pˇr´ıkazy jak dan´ y soubor vybudovat za soubor˚ u, na kter´ ych z´avis´ı syntaxe: soubor: soubory na kterych z´ avis´ı pˇ r´ıkazy kter´ e soubor vybuduj´ı pˇred pˇr´ıkazy mus´ı b´ yt tabel´ ator dovoluje definovat promˇenn´e promˇ enn´ a = hodnota $(promˇenn´a) pro lok´ aln´ı promˇenn´e, ${promˇenn´a} pro environment promˇenn´e # uvozuje koment´ aˇr, standardnˇe buduje “all”, spouˇst´ı se make [soubor] utilita touch makefile, pˇr´ıklad 1 all: sw1.2d NETCDF = /usr/local/netcdf-3.3.1 INCLUDE = -I$(NETCDF)/include FFLAGS = -O lib.o:
lib.f common.inc
f77 -c cflf.o: cflf.f f77 -c flux.o: flux.f f77 -c netcdf.o: f77 -c sw1.2d.o: f77 -c
-o lib.o $(FFLAGS) $(INCLUDE) lib.f common.inc -o cflf.o $(FFLAGS) $(INCLUDE) cflf.f common.inc -o flux.o $(FFLAGS) $(INCLUDE) flux.f netcdf.f common.inc -o netcdf.o $(FFLAGS) $(INCLUDE) netcdf.f sw1.2d.f common.inc -o sw1.2d.o $(FFLAGS) $(INCLUDE) sw1.2d.f
sw1.2d: sw1.2d.o cflf.o lib.o flux.o netcdf.o f77 -o sw1.2d $(FFLAGS) sw1.2d.o cflf.o lib.o flux.o netcdf.o \ -L$(NETCDF)/lib -lnetcdf clean: rm *.o rm sw1.2d • makefile, pˇr´ıklad 2 all: webpage webpage:webpage.tex Makefile .no_navigation.pl latex2html -no_navigation\ -t "Richard Liska Home Page"\ -address \ "
Richard Liska "\ webpage.tex - cp webpage/*.html ${HOME}/public_html • makefile, pˇr´ıklad 3 all: be bestep.f: reduce bestep.o: f77 -c be.o: be.f f77 -c ../lib/lib.o: f77 -c
gen bestep.tem
be:
be.o ../lib/lib.o bestep.o f77 -o be -O be.o ../lib/lib.o bestep.o • makefile, pˇr´ıklad 4, se zdrojov´ ymi soubory all:aprox FLAGS = -g aprox.o:aprox.c cc -c $(FLAGS) aprox.c prumer.o:prumer.c cc -c $(FLAGS) prumer.c odchylka.o:odchylka.c cc -c $(FLAGS) odchylka.c aprox:aprox.o prumer.o odchylka.o cc -o aprox $(FLAGS) aprox.o prumer.o odchylka.o -lm clean: rm *.o aprox nebo all:aprox
FLAGS = -g %.o: %.c cc -c -o $@ -O $(FLAGS) $*.c aprox:aprox.o prumer.o odchylka.o cc -o aprox $(FLAGS) aprox.o prumer.o odchylka.o -lm clean: rm *.o aprox • soubor aprox.c #include <stdio.h> float a[500]; int j; float pru,odch; float prumer(); float odchylka(); main() { int i; FILE *input; input = fopen("input","r"); j = 1; while (fscanf(input,"%f",&a[j]) != EOF) j++; j--; printf("%d\n",j); pru = prumer(); odch = odchylka(); printf("Prumer je %f a odchylka je %f.\n",pru,odch); } • soubor prumer.c extern float a[500]; extern int j; float prumer() { float sum; int i; sum = 0.; for(i=1;i<=j;i++) sum += a[i]; return(sum/j); } • soubor odchylka.c #include <math.h> extern float a[500]; extern int j; extern float pru; float odchylka() { float sum; int i; sum = 0.;
for(i=1;i<=j;i++) sum += (pru - a[i])*(pru - a[i]); return(sqrt(sum)/j); }
9.5
Knihovny
• vybudov´an´ı statick´e knihovny ze vˇsech *.o ar -r libaa.a *.o • dalˇs´ı volby ar – – – –
-r (replace) nahrad´ı -t (type) vyp´ıˇse obsah knihovny -x (extract) vytvoˇr´ı soubor *.o z knihovny -d (delete) vymaˇze soubor z knihovny
• dynamick´e knihovny *.so se buduj´ı pomoc´ı pˇrekladaˇce, napˇr: $ gcc -fPIC -c *.c $ gcc -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0 *.o $ ln -s libfoo.so.1.0 libfoo.so.1 $ ln -s libfoo.so.1 libfoo.so $ setenv LD_LIBRARY_PATH ‘pwd‘:$LD_LIBRARY_PATH
10
emacs
• editor, GNU project
10.1
Naprost´ e z´ aklady
• C-
znamen´ a ctrl- M- znamen´ a alt- nebo <Esc>- • kompletace jmen soubor˚ u, adres´ aˇr˚ u, funkc´ı pomoc´ı • komunikace na posledn´ım stavov´em ˇr´ adku, minibuffer, echo area • jm´eno souboru a dalˇs´ı informace na pˇredposledn´ım ˇr´adku (posledn´ım ˇr´adku okna), mode line • spuˇstˇen´ı emacs [file] • standardn´ı editor, co se p´ıˇse se opravuje, pˇr´ıkazy editoru pˇres C- nebo Mopraven´ y soubor oznaˇcen ** vlevo na druh´em ˇr´adku odspodu • buffer je jeden opravovan´ y soubor nebo i nˇeco jin´eho C-x C-f file (find file) editovat dalˇs´ı soubor file C-x C-s (save) uschovat aktu´ aln´ı buffer C-x s (save) uschovat vˇsechny buffery, pt´ a se C-x C-c ukonˇcen´ı editoru C-g (quit) ukonˇcen´ı, zruˇsen´ı pˇr´ıkazu
10.2
N´ apovˇ eda
• help C-h t (tutorial) C-h i (info) manu´ al v hypertextu, zobraz´ı se seznam pˇr´ıstupn´ ych manu´al˚ u v info-syst´emu, vybrat emacs, pˇr´ıkazy – skok na dalˇs´ı aktivn´ı hypertextov´ y odkaz – <Enter> otevˇren´ı hypertextov´e str´ anky na n´ıˇz smˇeˇruje dan´ y odkaz – u (up) pˇrechod o u ´roveˇ n v´ yˇse C-h k (key) co dˇel´ a kl´avesa C-h a pojem (apropos) vˇsechny funkce dˇelaj´ıc´ı nˇeco s dan´ ym pojmem C-h f fce (function) co dˇel´ a funkce fce
10.3
Z´ aklady
• pohyb kurzoru C-v PgDn M-v PgUp C-e (end) kurzor na konec ˇr´ adky C-a kurzor na zaˇc´ atek ˇr´ adky M-< zaˇc´atek bufferu M-> konec bufferu C-l m´ısto kde je kurzor na prostˇredn´ı ˇr´ adek okna • okna r´amec (frame) je jedno X-okno pod X-windows, v textov´em reˇzimu je jen jeden r´amec okno (window) je jedna ˇc´ ast r´ amce C-x 2 rozdˇelen´ı okna na 2 okna horizont´ alnˇe C-x 1 zvˇetˇsen´ı aktu´ aln´ıho okna na cel´ y r´ amec, zruˇsen´ı ostatn´ıch oken C-x o (other) pˇrepnut´ı do dalˇs´ıho okna C-x 4 f file editovat soubor file v druh´em oknˇe C-x 4 d dir dired adres´ aˇre dir v druh´em oknˇe C-x 5 f file editovat soubor file v dalˇs´ım r´amci • maz´an´ı nebo maˇze znak pˇred kurzorem C-k (kill) maˇze od kurzoru do konce ˇr´ adky C-y (yank) vkl´ ad´ a naposledy vymazan´e na m´ısto kurzoru • blok C-<space> oznaˇcen´ı zaˇc´ atku bloku (mark) C-w vymaz´an´ı bloku, konec bloku je na kurzoru (point) • odˇciˇ n, undo C-x u nebo C• hled´an´ı C-s ˇ rˇ etˇ ezec (search) pˇr´ır˚ ustkov´e hled´ an´ı, hled´a s t´ım jak p´ıˇsu ˇretˇezec C-s C-s opakov´ an´ı pˇredchoz´ıho hled´ an´ı C-r (reverse search) pˇr´ır˚ ustkov´e hled´ an´ı od kurzoru k zaˇc´atku souboru M-% ˇ retˇ ezec1 ˇ retˇ ezec2 (query replace) nahrazov´an´ı s dotazem, odpovˇed’ y,n,<Esc> nebo ! - nahrad’ vˇsechny dalˇs´ı v´ yskyty M-x replace-regexp nahrazov´ an´ı s pouˇzit´ım regul´arn´ıch v´ yraz˚ u • buffery C-x C-b (buffers) seznam buffer˚ u v druh´em oknˇe, pˇr´ıkazy – – – –
f (file) zobraz buffer v tomto oknˇe o (other) zobraz buffer v druh´em oknˇe d (delete) oznaˇc buffer pro zruˇsen´ı x (execute) zruˇs oznaˇcen´e buffery, pt´ a se na neuloˇzen´e buffery, kter´e byly opraveny
C-x b buffer (buffer) pˇrepnut´ı okna do bufferu buffer C-x k (kill) zruˇs´ı aktu´ aln´ı buffer • dired, file manager C-x d dir v´ ypis (ls -l) adres´ aˇre dir v aktu´ aln´ım oknˇe, pˇr´ıkazy – – – – – – – – – – • shell
f (file) zobraz soubor nebo adres´ aˇr (dired) v tomto oknˇe o (other) zobraz soubor nebo adres´ aˇr v druh´em oknˇe d (delete) oznaˇc soubor pro zruˇsen´ı x (execute) zruˇs oznaˇcen´e soubory, pt´a se na maz´an´ı soubor˚ u, odpovˇed’ yes nebo no m (mark) oznaˇcen´ı souboru u (unmark) odoznaˇcen´ı souboru C (copy) kop´ırov´ an´ı souboru nebo oznaˇcen´ ych soubor˚ u R (rename) pˇrejmenov´ an´ı nebo pˇresun souboru/˚ u M (mode) zmˇena pˇr´ıstupov´ ych pr´ av L (link) vytvoˇren´ı linku
M-x shell spust´ı shell v jednom bufferu • funkce M-x fce vyhodnot´ı, spust´ı funkci fce <Esc><Esc> (Lisp-fce) spust´ı Lispovskou funkci, pˇri prvn´ım pouˇzit´ı dotaz C-x <Esc><Esc> znovuspuˇstˇen´ı pˇredchoz´ıho sloˇzit´eho pˇr´ıkazu (pˇr´ıkaz vyd´avan´ y na posledn´ı ˇr´adce), z´asobn´ık sloˇzit´ ych pˇr´ıkaz˚ u, v z´ asobn´ıku se pohybuji M-p, M-n • konfiguraˇcn´ı soubor .emacs • form´atov´an´ı podle typu souboru *.c, *.f, *.tex, pˇreklad a ladˇen´ı podle typu souboru • definov´an´ı maker, funkc´ı, naps´ an v jazyku Lisp, moˇznost doprogramovat v Lispu • rmail - ˇcten´ı e-mail pod emacs • atd.
10.4
ˇ stina pod emacs Ceˇ
• na linuxech je emacs-20, na silikonech emacs-19 • ˇcesk´e fonty ISO Latin 2, fonty se jm´enem *-iso8859-2, do souboru .tcshrc pˇridat alias napˇr. alias emacs "emacs -fn -misc-fixed-medium-r-normal-sans-20-180-75-75-c-100-iso8859-2" (nen´ı nutn´e pro emacs-20 na linuxech - najde si ˇcesk´e fonty s´am) • ˇcesk´a kl´avesnice, pˇrep´ın´ an´ı kl´ avesou C-\ nebo pause (emacs-19), do souboru .emacs pˇridat ˇr´adky (set-language-environment "czech") (if window-system (setq selection-coding-system ’latin-2) (set-terminal-coding-system ’latin-2)) (setq default-input-method ’czech-qwerty) nebo pro emacs-19 (load "czech") • bal´ık emacs-czech najdete na http://www.fi.muni.cz/˜pdm/emacs-czech.html • ˇcesk´e fonty lze naj´ıt napˇr. na ftp://ftp.muni.cz/pub/UNIX/localization/
11
LATEX
• • • • •
syst´em pro tiskovou sazbu, slovn´ı procesor, vhodn´ y pro technick´e publikace je nadstavbou syst´emu TEX, kter´ y napsal Donald E. Knuth vstupem je ASCII soubor, kter´ y obsahuje vˇsechny pˇr´ıkazy pro form´atov´an´ı textu LATEXje v podstatˇe programovac´ım jazykem pro pˇr´ıpravu dokument˚ u vstupn´ı soubor *.tex se pˇreloˇz´ı do bin´ arn´ıho souboru *.dvi (device independent), jehoˇz zobrazen´ım na obrazovce nebo tisk´ arnˇe teprve z´ısk´ ame koneˇcnou podobu dokumentu • z´akladn´ı moˇznosti: libovoln´e form´ atov´ an´ı textu, ˇc´asti, tabulky, matematick´e vzoreˇcky, obr´azky (eps), obsah, index, citace (bibtex), styl str´ anky a dokumentu • profesion´aln´ı kvalita, pˇr´ıstupn´ y a kompatibiln´ı na mnoha platform´ach • existuje pˇrekladaˇc z LATEXdo HTML (latex2html)
11.1
Z´ aklady
• pˇr´ıkazy zaˇc´ınaj´ı na backslash \, za n´ım je jm´eno pˇr´ıkazu, za n´ım pˇr´ıpadn´e volby v [ ], za nimi pˇr´ıpadn´e argumenty v {} \pˇ r´ ıkaz[volby]{argumenty} • nejjednoduˇsˇs´ı dokument \documentstyle{article} \begin{document} Text dokumentu. \end{document} • form´at z´apisu textu je voln´ y • odstavce se oddˇeluj´ı pr´ azdnou ˇr´ adkou
• jednotliv´e ˇc´asti dokumentu se uvod´ı pˇr´ıkazy \section{N´ azev ˇ c´ asti} \subsection{N´ azev podˇ ca ´sti} \subsubsection{N´ azev pod-podˇ c´ asti}
11.2
Zpracov´ an´ı dokumentu
• vstupn´ı soubor je file.tex • pˇreklad latex file vytvoˇr´ı file.dvi a nˇekter´e dalˇs´ı soubory file.*; m˚ uˇze se zastavit na chybˇe, pak pˇr´ıkaz ”x” ukonˇc´ı pˇreklad; pro ˇcesk´ y dokument cslatex file • zobrazen´ı dokumentu pod X-windows xdvi file kliknut´ı myˇs´ı dˇel´ a zoom oblasti okolo kurzoru • pˇreklad dvi souboru do Postscriptu dvips file vytvoˇr´ı soubor file.ps • tisk lp file.ps nebo lpr
11.3
Pˇ r´ıprava vstupn´ıho souboru
• speci´aln´ı znaky # $ % & ^ _ ~ \ { } se uˇz´ıvaj´ı jen jako souˇc´ ast pˇr´ıkaz˚ u ame pˇred nˇe ve vstupn´ım souboru backslash, tj. \# \$ \% \& \_ \{ \} pokud chceme pouˇz´ıt # $ % & { } d´ ostatn´ı \ ^ ~ jen pomoc´ı \verb+ \ ^ ~ + , nam´ısto + m˚ uˇze b´ yt i jin´ y omezovaˇc • je moˇzn´e pouˇz´ıt ˇradu dalˇs´ıch znak˚ u • zv´yraznˇen´y text pomoc´ı {\em zv´ yraznˇ en´ y text} tuˇ cnˇ e {\bf tuˇ cnˇ e} sans serif {\sf sans serif} roman {\rm roman} italic {\it italic} slanted {\sl slanted} Small Caps {\sc Small Caps} typewriter {\tt typewriter} • velikosti pomoc´ı \tiny \scruptsize \footnotesize \small \normalsize \large \Large \LARGE \huge \Huge • pozn´amky pod ˇcarou \footnote{pozn´ amka} • koment´aˇre jsou vˇse na ˇr´ adku za %
11.4
Seznamy
• itemize – toto je jedna poloˇzka seznamu, kter´a m˚ uˇze b´ yt na v´ıce ˇr´ adk˚ u – toto je druh´ a poloˇzka ∗ podpoloˇzka ∗ druh´ a podpoloˇzka
• enumerate, ˇc´ıslovan´e poloˇzky
\begin{itemize} \item toto je jedna poloˇ zka seznamu, kter´ a m˚ uˇ ze b´ yt na v´ ıce ˇ r´ adk˚ u \item toto je druh´ a poloˇ zka \begin{itemize} \item podpoloˇ zka \item druh´ a podpoloˇ zka \end{itemize} \end{itemize}
1. toto je jedna poloˇzka seznamu, kter´a m˚ uˇze b´ yt na v´ıce ˇr´ adk˚ u 2. toto je druh´ a poloˇzka (a) podpoloˇzka (b) druh´ a podpoloˇzka
• description za a) jedna poloˇzka
\begin{description} \item[za a)] jedna poloˇ zka \item[za b)] druh´ a poloˇ zka \end{description}
za b) druh´a poloˇzka
11.5
\begin{enumerate} \item toto je jedna poloˇ zka seznamu, kter´ a m˚ uˇ ze b´ yt na v´ ıce ˇ r´ adk˚ u \item toto je druh´ a poloˇ zka \begin{enumerate} \item podpoloˇ zka \item druh´ a podpoloˇ zka \end{enumerate} \end{enumerate}
Styly dokument˚ u
• z´akladn´ı styly: article, report, book • z´akladn´ı volby: 11pt, 12pt, twoside, twocolumn • volba pro ˇceˇstinu: czech
11.6
Matematick´ e vzorce
• vzorce v textu $ . . . $ tˇreba takov´ y polynom x2 − 5x + 3 m˚ uˇze b´ yt souˇc´ast´ı textu • displaymath \[ . . . \] ale takov´a racion´ aln´ı funkce 2
x3
x − 5x + 3 − 4x2 + 5x − 10
uˇz radˇsi bude mezi ˇr´ adky • equation, s ˇc´ısly rovnic Z 2 e−x dx
(1)
• indexy nahoˇre a dole uni,j+1 − un+1 i,j • odmocniny√ √ x+y− 32 • ˇreck´a p´ısmena α+β−∆ • vˇetˇsina matematick´ ych symbol˚ u P ≥, ∞, ⇒, ∀, • ˇrada matematick´ ych funkc´ı sin x, ln(x + y) • pole a velk´e z´ avorky
x+y 0
a x−y
• vzorce na v´ıce ˇr´ adk˚ u
tˇ reba takov´ y polynom $x^2 - 5 x + 3$ m˚ uˇ ze b´ yt souˇ c´ ast´ ı textu ale takov´ a racion´ aln´ ı funkce \[ \frac{x^2 - 5 x + 3} {x^3 - 4 x^2 + 5 x -10} \] uˇ z radˇ si bude mezi ˇ r´ adky \begin{equation} \int e^{-x^2} d x \end{equation} $ u^n_{i,j+1} - u^{n+1}_{i,j}$ $\sqrt{x+y} - \sqrt[3]{2}$ $\alpha + \beta - \Delta$ $\geq, \infty, \Rightarrow, \forall, \sum$ $\sin x, \ln(x+y)$ \[ \left( \begin{array}{lr} x+y & a \\ 0 & x - y \end{array} \right) \]
\begin{eqnarray} x & = & 4 y \label{rovnice1}\\ x = 4y (2) y & > & a^2+3 a b^2- \nonumber\\ & & 5 c-4 d^3\label{rovnice2} y > a2 + 3ab2 − 3 \end{eqnarray} 5c − 4d (3) • odkazy na rovnice, ˇc´ asti dokumentu, tabulky, obr´azky rovnice (2) je rovnic´ı pro x a y, (3) je rovnice (\ref{rovnice1}) je nerovnic´ı pro y rovnic´ ı pro $x$ a $y$, (\ref{rovnice2}) je nerovnic´ ı pro $y$
11.7
Tabulky
• s r´ameˇcky i bez nich Jm´eno v´ yˇska v´ aha Jan 180 78 Josef 190 85
11.8
\begin{tabular}{|l|cc|} Jm´ eno & v´ yˇ ska & v´ aha Jan & 180 & 78 Josef & 190 & 85 \end{tabular}
\hline \\ \hline \\ \\ \hline
Obr´ azky
• obr´azky *.eps Encapsulated Postscript
density
20 15 10 5 0 0.5 0.4 0
0.3 0.1
0.2 x
0.2 0.3
y
0.1 0.4
0.5
0
Obr´ azek 1: Surface and contour plot of density for the Noh problem. \begin{figure}[htb] \begin{center} \begin{tabular}{c} \includegraphics[width=0.5\textwidth]{eps/nohdcyl} \end{tabular} \end{center} \caption{ Surface and contour plot of density for the Noh problem. } \label{noh-dcyl} \end{figure}
11.9
Citace
• seznam literatury
Literatura
\begin{thebibliography}{99} \bibitem{latex} L. Lamport. \LaTeX, A Document Preparation System, Addison-Wesley, Reading. 1986. \end{thebibliography}
[1 ] L. Lamport. LATEX, A Document Preparation System, AddisonWesley, Reading. 1986. • odkazy na literaturu kompletn´ı dokumentaci k syst´emu kompletn´ ı dokumentaci k syst´ emu \LaTeX LATEXnajdete v [1] najdete v \cite{latex} • BibTEX, datab´ aze literatury, seznam literatury se vytv´aˇr´ı automaticky pˇri pouˇzit´ı nutno pˇrekl´ adat v posloupnosti latex file; bibtex file; latex file; latex file
12
Administrace syst´ emu
• z´aloˇzn´ı kopie – na p´asku tar, dd – zrcadlen´ı disk˚ u, pˇr´ıklad find . ! -type d -mtime -2 -type f -print > /tmp/ppppp tar cBf - -T /tmp/ppppp | (cd /usr/home/i/liska; tar xBf -)
12.1
Uˇ zivatel´ e
• soubor /etc/passwd definuje uˇzivatele syst´emu • kaˇzd´ y ˇra´dek definuje jednoho uˇzivatele • struktura ˇr´adku – poloˇzky oddˇelen´e dvojteˇckami – – – – – – –
uˇzivatelsk´e jm´eno zak´odovan´e heslo (nic - uˇzivatel bez hesla, * - uˇzivatel nem´a pˇr´ıstup) ˇc´ıslo uˇzivatele ˇcislo skupiny u ´pln´e jm´eno uˇzivatele domovsk´ y adres´ aˇr shell
• pˇr´ıklad novak:56HNZkjhkJ5k:1112:20:Jiri Novak,,,,,,,:/home/novak:/bin/tcsh dvorak:lfkoHHi5v.Q2a:1113:20:Josef Dvorak,,,,,,,:/home/dvorak:/bin/tcsh svoboda:Qfk8hi7klZM2Q:1117:20:Jan Svoboda,,,,,,,:/home/svoboda:/bin/tcsh • zaveden´ı nov´eho uˇzivatele – do /etc/passwd doplnit ˇr´ adek uzivatel::1120:20:Jm´ eno Pˇ r´ ıjmen´ ı,,,,,,,:/home/uzivatel:/bin/tcsh – vytvoˇrit jeho domovsk´ y adres´ aˇr a d´ at mu ho – skop´ırovat mu z´ akladn´ı konfiguraˇcn´ı soubory jako je .cshrc, .login a d´at mu je – pˇridˇelit m´ısto na disc´ıch na kter´e m´ a pˇr´ıstup pro psani – quota – pˇripojit se pod nov´ ym jm´enem a pomoc´ı passwd zadat poˇc´ateˇcn´ı heslo • s´ıt’ov´a podpora – yellow pages (yp), network information service (NIS) – – – –
12.2
NIS server - hlavn´ı a vedlejˇs´ı ypwhich NIS dom´ena - jin´ a neˇz internetov´ a dom´ena domainname zmˇena hesla yppasswd pˇr´ıstup k passwd ypcat passwd
Skupiny
• soubor /etc/group • kaˇzd´ y ˇr´adek definuje jednu skuninu • struktura ˇr´adku – poloˇzky oddˇelen´e dvojteˇckami – jm´eno skupiny
– zak´odovan´e heslo (nic - skupina bez hesla, * - skupina nem´a pˇr´ıstup) – ˇcislo skupiny – uˇzivatelsk´ a jm´ena ˇclen˚ u skupiny oddˇelen´a ˇc´arkami • pˇr´ıklad skupina1::21:novak,dvorak
12.3
Swapovac´ı prostor
• velikost pˇribliˇznˇe dvojn´ asobek velikosti RAM • vˇetˇsinou pˇri instalaci, Linux - specieln´ı swap partition, SGI - swap lze pˇrid´avat
12.4
Pravideln´ au ´ drˇ zba
• lecco lze automatizovat pˇres cron, crontab - pravideln´a u ´drˇzba jednou dennˇe, t´ ydnˇe • log-soubory (z´ aznamy o aktivitˇe syst´emu) rostou, pokud pˇrerostou urˇcitou velikost bud’ se vymaˇzou nebo se poˇslou e-mailem rootovi • aktualizace datab´ az´ı - napˇr. NIS • u ´klid core, cache od netscape atp. • poˇskozen´e disky spravuje fsck
12.5
Subsyst´ emy
• subsyst´emy jsou ˇc´ asti nebo rozˇs´ıˇren´ı OS (s´ıt’ov´e sluˇzby, quota, X-windows) • subsyst´emy se zastavuj´ı nebo spouˇstˇej´ı pomoc´ı skript˚ u z adres´aˇre /etc/init.d pro SGI a /etc/rc.d/init.d pro Linux • boot syst´emu je ˇr´ızen skripty z adres´ aˇr˚ u /etc/rc*.d pro SGI a /etc/rc.d/rc*.d pro Linux, pokud chci nˇeco pravidelnˇe startovat pˇri bootu (napˇr. licenˇcn´ı server) mus´ım to do tˇechto skript˚ u pˇridat
12.6
S´ıt’ov´ e sluˇ zby
• z´akladn´ı konfigurace s´ıtˇe (IP adresa, dom´enov´a adresa, dom´ena, net-mask, broadcast, name server) • s´ıt’ov´e sluˇzby pops´ any v /etc/services - jm´eno sluˇzby, port, typ pˇrenosu (TCP nebo UDP) • vˇetˇsina s´ıt’ov´ ych sluˇzeb je obhospodaˇrov´ ana d´emonem inetd s konfiguraˇcn´ım souborem /etc/inetd.conf urˇcuje jak´ y program (vˇetˇsinou d´emon) obslouˇz´ı danou sluˇzbu • inetd ˇcek´a na poˇzadavek na sit’ovou sluˇzbu, podle typu poˇzadavku spust´ı dan´ y program, kter´ y poˇzadavek obslouˇz´ı
12.7 • • • • •
13
Instalace sloˇzky syst´emu pomoc´ı swmgr, versions u SGI, rpm u Red Hat Linuxu vˇetˇsina ostatn´ıch program˚ u do /usr/local instalace bin´arek do /usr/local/bin instalace knihoven do /usr/local/lib instalace ze zdrojov´ ych vers´ı - konfigurace, pˇreklad, linkov´an´ı, instalace, konfigurace – vˇetˇsinou pˇres make
X Windows
• X-server X nebo Xsgi zobrazuje poˇzadavky od klient˚ u - jednotliv´ ych program˚ u beˇz´ıc´ıch na lok´aln´ım nebo vzd´alen´em poˇc´ıtaˇci • window manager mwm nebo 4Dwm obhospodaˇruje jednotliv´a okna (dekorace, pˇremist’ov´an´ı, menu, atd.), pracovn´ı plochu (ikony, menu, atd.), moˇzno i v´ıce pracovn´ıch ploch - desktop • u ´rovnˇe nadstavby pˇri programov´ an´ı – Xlib – z´akladn´ı zobrazov´ an´ı – Xt - X toolkit – nadstavba, okna, n´ astroje – vyˇsˇs´ı nadstavba - athena, motif - kompletn´ı sada ovladaˇc˚ u, rolov´atek, atd. • standardn´ı utility xload, xclock, xeyes, xcalc, xmag
• pˇren´aˇsen´ı textu myˇs´ı - oznaˇc´ım lev´ ym tlaˇc´ıtkem a kop´ıruji stiskem prostˇredn´ıho tlaˇc´ıtka • zmˇeny kl´avesnice xmodmap
13.1 • • • •
13.2 • • • • • • • • •
13.3 • • • •
14
Fonty seznam font˚ u xlsfonts ˇcesk´e fonty xlsfonts | grep 8859-2 v´ ybˇer fontu xfontsel instalce font˚ u mkfontdir instaluje adres´ aˇr font˚ u a pomoc´ı xset je nutn´e pˇridat tento adres´aˇr do fontpath
Volby volby (options), kter´e m˚ uˇze m´ıt libovoln´ y X-program -display snehurka:0 v´ ybˇer poˇc´ıtaˇce pro zobrazen´ı -fn 10x20 v´ ybˇer fontu -geometry 80x60+100-50 ; widthxheight+-xoff+-yoff zad´av´a velikost (v pixlech nebo znac´ıch) a polohu (v pixlech) okna dan´e aplikace -bg color (background) barva pozad´ı, barvy jsou definov´any v /usr/lib/X11/rgb.txt -fg color (foreground) barva popˇred´ı -bd color (border) barva okraj˚ u -bw n (borderwidth) tlouˇst’ka dekorace -title ˇ retˇ ezec jm´eno okna
Resources resources - zdroje definuj´ı ˇradu vlastnost´ı aplikac´ı defaultov´e jsou v adres´ aˇri /usr/lib/X11/app-defaults do souboru .Xdefaults m˚ uˇzeme um´ıst’ovat svoje, odliˇsn´e od defaultov´ ych pˇr´ıklad emacs.font: 9x15 emacs.background: DarkSlateBlue emacs.foreground: white emacs.cursorColor: yellow emacs.pointerColor: yellow emacs.menuBar: off
´ Ukoly
• zdroje - man, xman http://docs.linux.cz http://docs.linux.cz/skolicky/ • T´emata
find test touch, tee wc, du more, less grep diff, sdiff file, cut awk sed pine xcdroast mplayer, gmplayer xv xfig gimp convert mc wine perl form´aty PS a EPS acroread, xpdf HTML wget gnuplot kancel´aˇrsk´e programy iconv
-
program pro hled´ an´ı soubor˚ u program pro testov´ an´ı v´yraz˚ u jednoduch´e programy pro pr´ aci se soubory jednoduch´e programy pro pr´ aci se soubory filtry pro prohl´ıˇzen´ı textov´ych soubor˚ u program pro v´ypis ˇr´ adk˚ u obsahuj´ıc´ıch vzor program pro porovn´ avan´ı soubor˚ u informace o souboru / manipulace s textem jazyk pro manipulaci s textem program pro manipulaci s textem interaktivn´ı e-mail program vypalov´ an´ı CD pod X-windows pˇrehr´ av´ an´ı videa pod X-windows prohl´ıˇzeˇc obr´ azk˚ u pod X-windows editor vektorov´ych obr´ azk˚ u (sch´emat) pod X-windows kreslen´ı a manipulace s obr´ azky pod X-windows konverze obr´ azku z jednoho form´ atu do druh´eho file manager emul´ ator MS Windows interpretovan´y programovac´ı jazyk popis, prohl´ıˇzeˇce a n´ astroje pro manipulaci prohl´ıˇzen´ı PDF soubor˚ u a konverze do form´ atu PS jazyk pro www neinteraktivn´ı stahov´ an´ı dokument˚ u z www n´ astroj pro kreslen´ı graf˚ u Star Office (soffice), pˇr´ıp. Open Office pˇrevod dokument˚ u s r˚ uzn´ym k´ odov´ an´ım ˇceˇstiny