Sis llys Johdatus Linuxiin/UNIXiin: Osa 3 Reijo Siven Tietojenk sittelytieteen laitos Helsingin yliopisto Prosessien hallinta Sy tt ja tulostus S nn lliset lausekkeet Tiedostojen k sittely Hakemistojen ja tiedostojen arkistointi ja pakkaus Prosessin tilat Prosessien hallinta Prosessi = itsen inen tapahtuma, joka on suorituksessa (yleens komento) Prosessi voi olla jossain seuraavista tiloista: Suorituksessa etualalla (foreground process) Suorituksessa taka alalla (background process) Pys ytettyn (suspend) Taustaprosessi pys ytet n, jos se yritt kirjoittaa n yt lle
Prosessien monitorointi Prosessit ovat komentotulkkikohtaisia Vain yksi prosessi on etualalla kerrallaan. Se saa lukea n pp imist ja tulostaa n yt lle. Tausta ja pys ytettyj prosesseja voi olla useita. ps [optiot] N ytt suorituksessa olevat prosessit a N yt kaikki prosessit (oletus: omat) l N yt enemm n tietoja jobs N ytt samasta tulkista k ynnistetyt prosessit top Monitoroi ja n ytt prosessien kuormitustilanteen Lopetus q komennolla Prosessien hallintakomentoja Prosessin vienti tausta ajoon & Vie aloitettavan komennon taustalle Esim. cc ohjelma.c & C z Pys ytt etualalla olevan prosessin Prosessin tuonti etu alalle fg [%tunnus] Tuo pys ytetyn tai taustalla olevan prosessin etualalle bg [%tunnus] Siirt pys ytetyn prosessin taustalle Tunnuksen (PID) saa selville komennolla jobs tai ps.
kill [ n] tunnus L hett lopetusk skyn prosessille, jonka tunnus on "tunnus" Optio n: M r mik lopetusk sky l hetet n prosessille. 9 on vahvin Esimerkkej ($ on kursorimerkki) $ cc logfilt2.c & [1] 7063 $ jobs [1] + background cc logfilt2.c $ kill 9 %1 [1] Killed cc logfilt2.c Sy tt ja tulostus: stdin, stdout, stderr $ cc jokumuu.c & [1] 7088 $ ps... 7088 cc jokumuu.c $ kill 9 7088 [1] Killed cc jokumuu.c Prosessin kolme sy tt ja tulostuskanavaa: stdin on sy tt kanava, jonka kautta prosessi saa tietoa ulkoa (yleens n pp imist lt ) stdout on tulostuskanava, jonka kautta prosessi antaa tietoja toiminnastaan (yleens n ytt ) stderr on virheilmoituskanava, jonka kautta prosessi voi esim. tiedottaa poikkeustilanteista (eli tulostaa jotain, mutta mahdollisesti eri kanavaa pitkin kuin stdout)
Sy tt ja tulostus: Oletuksia Oletusarvoisesti: stdin on yhdistetty n pp imist n stdout ja stderr on yhdistetty n ytt n Sek sy tt ett tulostus voidaan uudelleenohjata (redirect) Voidaan lukea muuta kuin n pp imist ja kirjoittaa muulle kuin n yt lle Sy tt ja tulostus: Uudelleenohjaus Komennon uudelleenohjausparametrit: komento > tiedosto stdout ohjataan tiedostoon tiedosto Esim. ps l > prosessilistaus.txt komento >> tiedosto stdout lis t n tiedoston tiedosto per n (tuhoamatta alkua) komento < tiedosto stdin luetaan tiedostosta tiedosto Esimerkkej ls l > tiedosto.txt Kokonaan uusi tiedosto ls l >> tiedosto.txt Listaus tiedoston loppuun more < tiedosto.txt Tiedoston n ytt sivu sivulta Sy te ja tulostus yhdistettyn Esim. Sort < lista.txt > aakkostettu_lista.txt Sy tteen loppumerkki on C d p tt my s n pp imist lt annetun sy tteen Esim. cat > tiedosto Tiedostosta luettaessa sy tetiedostoa ei tarvitse lopettaa C d merkill
Putket (pipe) Komennon saama sy te on eri asia kuin komennon parametrit. Parametrit annetaan komentorivill Komento saa sy tteens suoritusaikana Komentojen sy tt ja tulostusta voidaan putkittaa: Yhden prosessin tulostus on toisen sy te Komennon komento1 tulostus ohjataan komennon komento2 sy tteeksi putkimerkill : komento1 komento2 Esimerkkej ls l wc Tulosta merkit, sanat ja rivit tiedostolistauksesta ls l wc > tiedostolkm.txt Kuten yll, mutta tulos tiedostoon cat ~/src/*.c wc Kaikkien C l hdekielisten ohjelmien merkkien, sanojen ja rivien yhteislukum r Putkia voi olla useita per kk in Putken alussa ja lopussa voi olla uudelleenohjausta who sort cat b > kayttajat.txt numeroitu k ytt j listaus
Putki yhdistettyn UNIXin filosofiaan tehd pieni komentoja tarjoaa keinot koota monimutkaisia komentoja pienist paloista Putkifilosofian johdosta l hes jokainen komento osaa k ytt sy tt ja tulostuskanavia S nn lliset lausekkeet Merkkijonojen kuvaaminen S nn llinen lauseke Tavallinen merkkijono S Jono annettuja per kk isi merkkej nn llinen lauseke Keino kuvata merkkijonojoukkoja valinnaisuus, ehdollisuus ja toisto Er iden komentojen ja apuohjelmien k ytt m yhten inen esitystapa mm. (e)grep, less, more, awk, emacs S nn llinen lauseke on hahmo (pattern), jolla voi etsi siihen sopivat merkkijonot. Monipuolisempi mekanismi kuin jokerimerkit S nn llinen lauseke sis lt : Tavallisia merkkej : kuvaavat itsens Erikoismerkkej : kuvaavat rakenteita
Erikoismerkkej. Mik tahansa merkki (paitsi rivinvaihto) * 0 n kpl edellist merkki \ Poista erityismerkitys [...] Mik tahansa [...]:n sis ll oleva merkki V li, esimerkiksi 0 9, a c. ^ Rivin alku [^ ] Hyv ksyt n merkit, jotka eiv t ole []:n v liss $ Rivin loppu Er t komennot (awk, egrep, less,...) ymm rt v t my s seuraavat erikoismerkit: + 1 n kpl edellist merkki? 0 1 kpl edellist merkki Vaihtoehdot () Ryhmittelysulut S nn lliset lausekkeet jokerimerkit: S nn llisi lausekkeita k ytet n ohjelmien sis ll. Jokerimerkkej k ytet n kuvaamaan ohjelmille annettavia parametreja. Esimerkkej teksti merkkijono teksti ^teksti merkkijono teksti rivin alussa teksti$ merkkijono teksti rivin lopussa [Tt]eksti Teksti tai teksti t[aeiouy ]ksti toinen kirjain vokaali t.eksti toinen kirjain mik tahansa ^...$ kolmemerkkinen rivi ^\. rivi alkaa pisteell ^[^.] rivi ei ala pisteell koe* ko, koe, koee, koeee jne. [A Z ][A Z ]* Yksi tai useampi iso kirjain
egrep/awk/less esimerkkej [A Z ]+ Ainakin yksi iso kirjain juh jeh joh Joko juh, jeh tai joh 80[234]?86 pentium 8086, 80286, 80386, 80486, pentium ju(ha)* ju, juha, juhaha, juhahaha,... Etsint tiedostoista: grep Merkkijonon haku sy tteest : grep [optiot] merkkijono [tiedostot] Hakee tiedostoista (tai stdin) rivit, joilla on s lauseketta vastaava merkkijono Optioita: nn llist c n yt vain osumarivien lukum r i l erottele isoja ja pieni kirjaimia l n yt pelk t tiedostonimet sellaisista tiedostoista, joissa on osumia n n yt osumarivit rivinumeroineen v n yt rivit, joilta ei l ydy osumia Esimerkkej : grep/egrep egrep [optiot] merkkijono [tiedostot] Kuten grep, mutta k ytt laajennettua s nn llisten lausekkeiden syntaksia (vertaa edell ) ja on useimmiten nopeampi kuin pelkk grep Optiot: kuten grep:ssa, lis ksi: e merkkijono K ytet n silloin, kun s nn llinen lauseke (merkkijono) alkaa " " merkill ls l grep ^d vain hakemistot ls l egrep Jan Feb tammi ja helmikuun tiedostot
Tiedostojen vertailu: diff Tiedostojen k sittely diff [optiot] tiedosto1 tiedosto2 Listaa kahden tiedoston v liset erot. Lis tietoja man diff. Vertailu, etsint Tiedostojen etsint : find find hakemistot ehdot Tehokas komento tiedostojen etsint varten K y l pi annetut hakemistopuut: Hakee annetut ehdot t ytt v t tiedostot. Ainakin yksi hakemisto ja ehto annettava Find: Hakuehtoja name tiedostonimi Toteutuu, jos haettavan tiedoston nimi t ytt ehdon tiedostonimi; ehdossa voi olla jokerimerkkej type c Toteutuu, jos tiedosto on tyyppi c (f=tavallinen tiedosto, d=hakemisto) find ~ type d name.* ls listaa kaikki hakemistot, jotka alkavat pisteell kotihakemistosta ja kaikista alihakemistoista Lis optioita ja esimerkkej : man find.
Arkistointi ja pakkaus Hakemistojen ja tiedostojen arkistointi ja pakkaus Arkistointia tarvitaan Hakemisto/tiedosto kokonaisuuden tallettamiseksi k tev sti yhten tiedostona Tiedostojen pakkausta tarvitaan Levytilan s st miseksi Tiedonsiirron nopeuttamiseksi Esimerkki Verkon v lityksell toimitettava ohjelmisto arkistoidaan tiedostoksi, joka pakataan. Arkistointi: tar tar [optiot][tiedostot] Arkistoi tiedostoja levylle tai kopioi tiedostoja arkistosta takaisin. Jos tiedostojen joukossa on hakemistoja, koko hakemistosta alkava alipuu kopioidaan. Tominto optiot (vain yksi/komento): c tehd n uusi arkistotiedosto (compress) r liitet n tiedostot vanhaan arkistoon t tulostetaan arkistossa olevat tiedostonimet u lis t n tiedosto arkistoon, jos se ei ole viel siell x kopioidaan (avataan) tiedostot arkistosta (extract) Lis optiot: f arkisto talleta arkisto tiedostoon arkisto v n yt arkistoitavat tai palautetta vat tiedostonimet (verify)
Pakkaus: compress, gzip Esimerkki tar cvf koe.tar joku Hakemisto joku ja sen alihakemistot kopioidaan arkistotiedostoon (c=compress, v=verify, f=file) tar tvf koe.tar Tarkastetaan mit tiedostoja tuli arkistoon (t=tulosta) tar xvf koe.tar Puretaan arkisto. Alkuper inen arkistotiedosto j j ljelle (x=extract) compress [optiot][tiedostot] Pakkaa tiedostot pienemp n tilaan. Pakattu tiedosto saa.z p tteen. uncompress [optiot][tiedostot] Palauttaa compress pakatut tiedostot. Kalvot perustuvat: gzip [optiot][tiedostot] Kuten compress, mutta pakkaa paremmin. Pakattu tiedosto saa.gz p tteen. gunzip [optiot][tiedostot] Kuten uncompress, mutta.gz p tteisille tiedostoille. Juha Taina: Unix perusteita kalvomateriaali, 1998. Fred Hantelmann: Linux Start up Guide, Springer, 1999. Eero Hyv nen: Muuntokoulutuksen peruskurssi kalvomateriaali, 1999.