OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012 Luento 14: Unix Tekijät: Antti Virtanen, Timo Lehtonen, Matti Kujala, Kirsti Ala-Mutka, Petri M. Gerdt et al.
Loppukurssin luentoaikataulu Ma 1.10.2012 Unix-alkeita Ke 3.10.2012 Tietoverkot Ma 8.10.2012 Tietokoneen rakenne, konekieli, ohjelmointidemo, käyttöjärjestelmädemo. Ke 10.10.2012 Kertausluento, tenttitehtäviä.
Viikkoharjoituksia vielä tällä ja ensi viikolla Apua pakollisiin harjoitustehtäviin saatavissa Ma klo 10-12 Ke klo 14-16 ja 16-18 To klo 14-16 Päätalon sali PC201A
Luennon aiheet Mikä on Unix? Miksi käyttäisin Unixia? Unixin käytön perusperiaatteet Esimerkkejä peruskäytöstä
Harjoittelua... Viikkoharjoituksissa 5 ja 6 opetellaan Unixin peruskäyttöä yksinkertaisten tehtävien avulla. Mikäli homma ei suju yksin, kyselkää apua assareilta viikkoharjoitustilaisuuksissa! Tehtäviä voi toki tehdä myös kaverin kanssa, siten että kumpikin palauttaa omat vastauksensa erikseen. Aikaisempien vuosien kokemuksia: Unix-tehtävät kannattaa ehdottomasti aloittaa ajoissa...
Harjoittelua... Keskimääräiset suoritusajat Unix 1 -harjoitus 30 min Unix 2 -harjoitus 51 min Kurssihenkilökunta ei päivystä sähköpostin ääressä tenttiviikkoa edeltävänä viikonloppuna, hoitakaa siis nämä harkat kuntoon ennen viimeistä neuvontatilaisuutta (torstai 11.10. klo 14-16)
Hyödyllinen resurssi Pieni Unix-opas http://www.cs.tut.fi/~jkorpela/unix/all.html Googlella toki löytyy muitakin ohjeita... Linux-wiki http://linux.fi/wiki/etusivu
Mikä on Unix (kertausta käyttöjärjestelmäluennolta)? Unix on käyttöjärjestelmäperhe, johon kuuluu useita samankaltaisia ja historiallisesti samasta juuresta ponnistavia käyttöjärjestelmiä Esimerkiksi erilaiset Linux-distribuutiot MacOS:n konepellinalunen
Mikä on Unix (kertausta käyttöjärjestelmäluennolta)? Suunniteltu alusta lähtien monen käyttäjän järjestelmäksi Vahvasti rajattu mitä ohjelmat / käyttäjät saavat tehdä ja mitä ei Unix-käyttöjärjestelmät on koottu pienistä erillisistä palasista, jotka ovat eri ihmisten käsialaa Hajoita ja hallitse Voimavara avoimen lähdekoodin kehityksessä Tietoturvaongelmat yleensä rajautuvat yhteen palaseen Kukin palanen on vaihdettavissa toisenlaiseen tai vaihtoehtoiseen toteutukseen
Mikä on Unix (kertausta käyttöjärjestelmäluennolta) Unix-järjestelmät olettavat usein, että käyttäjä tietää mitä tekee Korkea oppimiskynnys Helppo tehdä fataaleja virheitä Linux-distribuutiot ovat ilmaisia Unixin kaltaisia käyttöjärjestelmiä, joita voi ladata vaikkapa netistä Opiskelijabudjetin tietokone: kasaa kone parhaista halvoista osista ja asenna siihen jokin Linux (vaikka Ubuntu)! Mac OS perustuu nykyisin Unix-järjestelmään Ikkunointijärjestelmän alta löytyy täysiverinen Unixkäyttöjärjestelmä työkaluineen
Unix sukupuu Lähde: Wikipedia 29.9.2009
Miksi Unix? Unix/Linux on ja tulee olemaankin suosittu palvelinjärjestelmä Esimerkiksi TTY:llä opiskelijoiden kotisivut ovat Unixpalvelimella TTY:n ohjelmointikursseilla käytetään Unix-palvelimia Unixiin törmää helposti teollisuudessa, siksipä se on osa opetustakin Toisin sanoen: jos haluat isona ohjelmoida työksesi, opettele Unixin käyttö (luennoijan subj. mielipide)! Pohjimmiltaan moni asia toimii samoin myös MacOS ja Windows-koneissa, vaikka perusta on piilossa Unix-taidot lisäävät ymmärrystä tietokoneen toiminnasta Ilmaisesta Linuxista ja MacOS-käyttiksestä saa enemmän irti, kun hallitsee Unix-tyylisen työskentelyn!
Miksi Linux (häpeilemätöntä Unixylistystä)? Eräs varsin huomionarvoisa seikka on, että Unixkäyttöjärjestelmiin ei juuri ole viruksia Voit avata sähköpostiviestin pelkäämättä outoja ohjelmia Et siis tarvitse koneen toimintaa hidastuttavia virustutkia, kuten esimerkiksi Windows-koneissa Jos haluat välttämättä koneeseesi Unixin lisäksi Windows-käyttiksen, niin Aja sitä virtuaalisena Asenna kaksi käyttöjärjestelmää kovalevylle, Linuxin käynnistysohjelma osaa huomioida asian Voit käyttää Linuxia töihin & opintoihin ja pelata Windows:lla Linux: ilmainen, vakaa ja tietoturvallinen Mac samantyylinen paketti kalliimmissa kuorissa...
Miksi Unix vaihtoehtoinen mielipide Lähde: http://research.microsoft.com/users/dweise/unix-haters.html (20.9.2007)
LAMP-arkkitehtuuri Linux Apache MySql PHP Yleisin avoin webbisovellusten arkkitehtuuri http://fi.wikipedia.org/wiki/lamp
Tekstipohjaiset käyttöliittymät Tekstipohjaisia käyttöliittymiä käytetään edelleen useissa eri sovelluksissa SPSS tilastolaskenta Grafiikkaohjelmien virittelyssä Tietokoneiden etähallinta Yleensä toimitaan komento-vastaus periaatteella 1. Kone odottaa komentoa 2. Kone suorittaa komennon ja antaa jonkun vastauksen Käyttöjärjestelmän komentotulkki on juuri em. periaatteen mukainen ohjelma
Komentotulkki? Unixin käyttöliittymä Graafisen käyttöliittymän vastakohta Komennot kirjoitetaan komentoriville Esimerkki: tekstinkäsittelyohjelman ja selaimen käynnistäminen
Tekstipohjaisuuden etuja Automatisoinnissa toiminnot on helppo määritellä eksaktisti Ikkunan paikka ruudulla, ruudun resoluutio jne. asiat eivät vaikuta kun käyttöliittymä on tekstipohjainen Komentotulkille on helppo automatisoida tietty toimintosarja Etäkäytössä tekstipohjainen liittymä vaatii verkolta ja koneelta hyvin vähän Esimerkiksi isoja palvelimia voidaan hallita kevyellä kännykällä hitaiden yhteyksien päästä Tekstipohjaisen käyttöliittymän ilmaisuvoima on joskus huomattavasti graafista parempi Monimutkaiset toiminnot voidaan ilmaista lyhyesti Samojen asioiden pakkaaminen valikoihin voi olla hankalaa
Pääteyhteys Pääteyhteys tarkoittaa tekstipohjaista yhteyttä kahden koneen välillä Puhutaan myös telnet-yhteydestä Nykyisin yleensä yhteys salataan (SSH-yhteys) Telnet ja SSH ovat tietoliikenneprotokollia (TCP/IP-malli, taso 5) Käyttäjä on internetin kautta yhteydessä Unixpalvelinkoneeseen (esimerkiksi proffa.cc.tut.fi)
Lisää pääteyhteydestä Pääteyhteys muodostetaan usein komentotulkkiin Komentotulkki on ohjelma, joka välittää käyttäjän antamat komennot käyttöjärjestelmälle Toisessa päässä voi vastata komentotulkin lisäksi myös joku muu ohjelma. Tekstipohjainen peli Pankki
Lisää pääteyhteydestä Monet tietoliikenneprotokollat ovat melko selväkielisiä Pääteyhteyden kautta on myös mahdollista esiintyä manuaalisesti esimerkiksi sähköpostia lähettävänä ohjelmana kun tietää mitä tekee Jotkut on tarkoitettukin toimimaan näin (esimerkiksi FTP) Tietoliikenneasioista lisää keskiviikkona!
Ylläpidon etähallintajärjestelmä
Joku toinen telnet-sovellus
Tommonenkin
Mitä tapahtuu pääteyhteydessä? Otetaan yhteys palvelimeen, eli loggataan sisään Jos loggautuminen onnistuu, niin pääte on nyt yhteydessä komentotulkkiin Annetaan komentoja kirjoittamalla ne ja painamalla enteriä Komentotulkki välittää komennon käyttöjärjestelmän hoidettavaksi Komennot voivat tehdä asioita tai käynnistää ohjelmia Komentojen ja ohjelmien suorituksen jälkeen palataan takaisin komentotulkkitilaan Lopuksi katkaistaan yhteys eli kirjaudutaan ulos
Yhteydenotto Unix-koneeseen Pääteyhteys muodostetaan SSH-protokolla tukevalla ohjelmalla Putty ja muut SSH-ohjelmat TTY:n Unix-palvelimiin, eli Proffa-klusteriin otetaan yhteyttä osoitteessa proffa.cc.tut.fi Kone saattaa kysyä vt100 ennen kirjautumista Vt100 on eräs käytäntö toteuttaa pääteyhteys Paina siis enteriä hyväksyäksesi vt100:n käyttö Unixin isät kuvassa. Vasemmalta Brian Kernighan, Dennis Richie Kuvalähde: Wikipedia
Katsotaanpa miten Proffalle muodostetaan yhteys... Entä mikä on Putty?
Komentotulkki (shell) Jos tietokoneessa halutaan ajaa eri ohjelmia on käyttöjärjestelmän käynnistyttyä käyttäjällä tarve käskyttää sitä Komentotulkki tulkitsee käyttäjän käskyt Voi olla käyttöliittymältään tekstipohjainen tai graafinen Komentotulkki EI kuitenkaan ole osa varsinaista käyttöjärjestelmän ydintä Suuressa osassa lähteitä komentotulkki kuitenkin lasketaan käyttöjärjestelmän osaksi
Komentotulkin skriptit Skripti (englanniksi script) on tekstitiedosto, johon on kirjoitettu käskyjä Skritpit ovat tulkattavia ohjelmia Skriptejä ei käännetä bittipötköiksi, vaan erityinen tulkkiohjelma lukee tiedoston ja noudattaa käskyjä Skriptikieliä on erilaisia (shell, perl, php, javascript,...) Komentotulkit osaavat ajaa skriptikieltä Samoja perustoimintoja kuin ohjelmointikielissä Komentojen ja ohjelmien ajaminen Ehdolliset hyppykäskyt Esim. tiedoston olemassaolon testaus Toimintojen automatisointi Etenkin käyttöjärjestelmän käynnistyksen yhteydessä Säännölliset ylläpitotoiminnot
Ympäristömuuttujat (environment variables) Tietokoneessa on asetuksia jotka vaikuttavat komentotulkin ja ohjelmien toimintaan Monet näistä asetuksista on toteutettu ympäristömuuttujien avulla Dynaamisia muuttujia, jotka vaikuttavat prosessien ajamiseen Dynaamisella muuttujalla tarkoitetaan tietokoneen suorituksen aikana asetettavia muuttujia Esim. Windows-maailmassa PATH
Käynnistysskripti Unixjärjestelmässä set path = (. ~ $lpath /usr/local /usr/local/bin /usr/ucb /usr/bin /usr/etc ) alias cd 'cd \!*;echo $cwd' alias rm 'rm -i' alias pwd 'echo $cwd' alias countcode 'grep "[; : }]" *.java wc -l' umask 022 set history=40 alias ls alias lo 'ls -CF' 'logout' setenv EDITOR emacs setenv IRCNICK PMG setenv TERM vt100 setenv LINES 25 set prompt="%m [%/]%#" setenv LC_CTYPE iso_8859_1 Komentotulkki C shell, eli csh Osittainen käynnistystiedosto.cshrc
Unix-komentoihin liittyviä perusasioita Voit antaa komentoja, jotka suorittavat erilaisia tehtäviä Komennot ovat (pieniä) ohjelmia Komentoja nimitetään joskus käskyiksi Komennot ovat yleensä lyhenteitä toiminnon verbistä Isoilla ja pienillä kirjaimilla on eroa Komennot annetaan yleensä muodossa: komento <optiot> argumentit Rivinvaihto suorittaa komennon Optiot ovat komennosta riippuvaisia lisäohjeita Parametrit määrittelevät toiminnolle kohteen tiedoston nimi, hakemiston nimi, käyttäjätunnus tms Komennolla man <komento> saa lisätietoja haluamastaan komennosta
Tiedostojen ja hakemistojen käsittely 1/4 ls näytä hakemiston sisältö (list) cd vaihda työhakemistoa (command directory) mkdir tee hakemisto (make directory) rmdir poista tyhjä hakemisto (remove directory) pwd näytä nykyinen työskentelyhakemisto (print working directory) Tiedoston nimi voi olla lähes mielivaltaisen pitkä merkkijono, jossa voi olla muita kuin / -merkkejä.
Tiedostojen ja hakemistojen käsittely 2/4 Unix hakemistopuun rakenne / hakemistopuun juuri /boot/vmlinuz (tai /vmlinuz) käyttöjärjestelmäohjelma /etc järjestelmän konfiguraatiotiedostoja Ei siis mitään levytunnisteita (C:, D:) Voi jatkua verkkolevylle (df -k)
Tiedostojen ja hakemistojen käsittely 3/4 /usr käyttöjärjestelmäasennus /usr/bin, /usr/sbin suoritettavia ohjelmia /usr/lib ohjelmakirjastoja /usr/man manuaalisivut /tmp väliaikaistiedostoja varten /var käyttiksen muuttuvia tiedostoja /home käyttäjien kotihakemistot /usr/local paikalliset asennukset
Tiedostojen ja hakemistojen käsittely 4/4 cp kopioi tiedostoja tai hakemistoja (copy) rm poista tiedostoja (tai hakemistoja) (remove) mv siirrä tiedostoja tai hakemistoja (move) chmod muuta tiedoston tai hakemiston oikeuksia (change mode) find etsi tiedostoa tai hakemistoa
Tiedostosuojaukset Unixissa Perusoikeudet ovat: Luku (r), kirjoitus (w), execute (x) Hakemistojen yhteydessä listaus, lisäys/poisto, käyttö Oikeudet erikseen Tiedoston omistajalle (u), ryhmälle (g) ja muille (o) Käyttöoikeuksien muuttaminen man chmod Älä luota oletusasetuksiin...
Muutama tärkeä perusasia lisä: *,? ja ~ Tähti * korvaa minkä tahansa merkkijonon esimerkiksi tiedostonimessä Komento voidaan kohdistaa helposti moneen tiedostoon samalla kerralla Tähtimerkki * korvaa myös tyhjän! Kysymysmerkki? korvaa minkä tahansa yksittäisen merkin Tilde ~ viittaa käyttäjän kotihakemistoon Kaikki komennot suoritetaan oletusarvoisesti työhakemistossa, ellei toisin määrätä Mikä on nykyinen työhakemisto? Käsky pwd kertoo
Tiedostojen tutkiminen less näytä tekstitiedoston sisältö ruutu kerrallaan (opposite of more) more on less:n kaltainen, mutta yksinkertaisempi cat yhdistä useita tiedostoja ja tulosta kaikki (concatenate) wc näytä montako merkkiä tai riviä tekstitiedostossa on (Word Count) file kertoo millainen tiedoston sisältö on pico, emacs, vi tiedoston editointi
Tietoa käyttäjistä ja koneista finger tietoja käyttäjistä finger <käyttäjätunnus> - kerro tietoja käyttäjätunnuksen omistajasta Milloin viimeksi lukenut sähköpostit Onko loggautunut Mistä on loggautunut (viimeksi) Milloin on käyttänyt konetta (viimeksi) w näytä ketä on loggautuneena, paljonko konetehoa he käyttävät ja mitä he tekevät who kuten w, mutta yksinkertaisempi
Tietoa prosesseista ps - näytä tietoja prosesseista kill <prosessin numero> - tapa eli lopeta prosessi top - näyttää CPU-syöpöt prosessit (ja käyttäjät) Tausta-ajoksi &-merkillä komennon lopussa Control-z keskeyttää ohjelman ajon fg ja bg vaihtavat pysäytetyn prosessin tilaa Control-c lopettaa ohjelman suorituksen
Prosessin tilakaavio R U N Ctrl-C, exit() cmd fg Ctrl-Z komentorivi fg S T O P kill R.I.P. Kill -STOP Cmd & bg Kill, exit() Tausta-ajossa
Salasana, kirjautuminen ulos logout kirjaudu ulos passwd vaihda salasana
I/On ohjaus Normaalisti ohjelman saama syöte tulee näppäimistöltä ja tuloste tulee terminaali-ikkunaan > komennon lopussa ohjaa tulosteen tiedostoon >> komennon lopussa jatkaa tulosteen tiedostoon < komennon lopussa ohjaa syötteen tulemaan jostakin tiedostosta eikä näppikseltä
Putkitus Unix-komentoja voi putkittaa : edellisen käskyn tuloste annetaan syötteeksi seuraavalle käskylle Saadaan monimutkaisia toimintoja yhdistämällä komentoja luovasti peräkkäin Graafisissa käyttöliittymissä vastaavaa toimintoa ei ole näkynyt Kahden tai useamman käskyn putkitus tapahtuu kirjoittamalla käskyjen väliin putkimerkki joka myös pystyviivana tunnetaan: Esimerkiksi: cat tiedosto.txt wc -l
Joitakin käteviä ohjelmia pine sähköpostiohjelma pico yksinkertainen tekstieditori tin - news-lukuohjelma lynx tekstipohjainen verkkoselain irssi - Irkkausohjelma
Entä se kätevyys ja ilmaisuvoima? Kulmakiviä Jokerimerkit * ja? Putkitus Säännölliset lausekkeet Shell-skriptit Symboliset linkit tiedostojärjestelmässä Apuohjelmat (rsync, crontab jne) Shell-skriptillä voidaan määritellä jono käskyjä, jotka suoritetaan kerralla kun skripti ajetaan Säännöllisillä lausekkeilla voidaan tunnistaa ja muokata merkkijonoja Näiden ominaisuuksien sujuva käyttö ei mahdu tämän kurssin aihepiiriin
Tiedosto-oikeudet Unixissa, hyvin lyhyesti Kotihakemistosi sisältö (esimerkiksi harjoitustyöt) näkyy turhankin hyvin, jos oikeudet ovat väärin Kotisivusi eivät näy, jos oikeudet ovat väärin ls la näyttää oikeudet Jos käytät kotihakemistoasi vain Windows-koneilta, Windows hoitaa oikeudet, etkä voi vaikuttaa niihin Unixissa tiedostoille ja hakemistoille tulevat oletusoikeudet ovat ok, joten yleensä ei tarvitse muokata mitään
Hienoja komentoja Vaihdetaan jokaisen js-päätteisen tiedoston ensimmäiset 27 riviä toisesta tiedostosta (flash_js.templ) kopioiduiksi riveiksi for i in `ls *.js`; do echo $i; cp flash_js.templ $i.new; sed -n -e "27,\$p" $i >> $i.new; done Etsitään tekstiä halutuista tiedostoista (*.txt eli txtpäätteiset) find. -name "*.txt" xargs grep Hamlet Muutetaan tiedostojen nimet isoista pieniksi kirjaimiksi rename '$_=lc($_)' * rename 'y/a-z/a-z/' * Tämän tyyppisten asioiden tekemisestä ei tule ihan helpolla sujuvaa. Mutta kun tulee, monet hankalat asiat muuttuvat helpoiksi Peruskäytössä hyöty ei ole niin ilmeinen ja suuri
Mistä saan tietoa Unixista? Kari Lehtolan ja Anu Airolan Pieni Unix-opas on hyvä ja aloittelijaystävällinen Kirjoita googlen hakusanaksi pieni unix-opas URL: http://cs.stadia.fi/~lehtonen/unix/unix-pieni.html Jukka K. Korpelan Unix-opas on toinen erinomainen lähtökohta Unix-tuntemukselle Kirjoita hakusanaksi Unix-opas URL: http://www.cs.tut.fi/~jkorpela/unix/index.html Muista komento man <komento> (manual) Unixin helppi...
Graafinen käyttöliittymä Unixissa Pohjautuu MITssa kehitettyyn X-windows ympäristöön Peruselementit ovat ikkunointipalvelin (window server), ikkunoiden hallinta (window manager), sovellukset ja niihin liittyvät kirjastot. Ikkunointiympäristö hajaantuu verkkoon (serverin pitää olla paikallinen) M$windows!= X-windows!
X-windowsin palaset - määrää ikkunoiden ilmiasun ja käsittelytavan (Look'n'Feel) - ajetaan yleensä paikallisesti - Linuxissa useita vaihtoehtoja - ajossa jossakin verkon koneella - juttelee X-protokollaa - funktiokirjasto määrittää grafikkaelementtien ilmiasun - X-protokollan voi putkittaa (ssh) Window manager Sovellus 1 funktiokirjasto X-windows server - paikallisesti ajettava - juttelee laitteiston kanssa - kuuntelee sovelluksia Sovellus 2 funktiokirjasto
Joitakin X-windows ohjelmia xterm pääte xclock kello xeyes X-silmät emacs teksiteditori xv - kuvienkatseluohjelma