260 likes | 478 Views
Unix/Linux alapok. Hága Péter ELTE Komplex Rendszerek Fizikája tanszék. Unix és Linux. Unix: gyors, biztonságos szerver operációs rendszer 1969 -ből . Sun - Solaris, IBM - AIX, Hewlett-Packard - HP-UX. .
E N D
Unix/Linux alapok Hága PéterELTE Komplex Rendszerek Fizikája tanszék
Unix és Linux • Unix: gyors, biztonságos szerver operációs rendszer 1969-ből. Sun - Solaris, IBM - AIX, Hewlett-Packard - HP-UX. • Linux: legelterjedtebb Unix változat, amit 1991-től fejlesztenek.LinusTorvalds, finn programozó fejlesztett ingyenes Unix alapú OS-t, és megosztotta a kódjait azokkal akik részt akartak venni a munkában.
Miért használjunk Linux-ot? - általában • Linux robosztus és stabil • Linuxban kevesebb bug található, mint más OS-ben • Linux erőteljes • Linux nagy teljesítményű • Linux szinte minden eszközzel együttműködik • Linux flexibilis • Testreszabhatóhardver támogatás • Teljes mértékben testreszabható szoftverek • Linux számos platformon fut • Linux jól támogatott • Linux meglehetősen olcsó • Nincsenek licensz díjak • Hatékony szoftverek egybecsomagolva a rendszerrel
Miért használjunk Linux-ot? - szerintem • Linux erőteljes • Linux nagy teljesítményű • Linux szinte minden eszközzel együttműködik • Linux jól támogatott • Linux meglehetősen olcsó • Ezért elterjedt egyetemi környezetben • Elterjedt szerveres, superszámítógépes környezetben • Hatékony szoftverek egybecsomagolva a rendszerrel • Linux jól scriptelhető • Szinte minden szoftver meghívható parancssorból • Szoftverek jól kapcsolózhatóak, paraméterezhetőek • Linux parancsok összefűzhetőek (pipe-olás) • Linux szerverek távolról könnyen elérhetőek • Linux jogosultságkezelés
Linux a valóságban • Disztribuciók • Debian • Mandrake • Red Hat • Ubuntu • Cygwin • Virtuális gépek • Felhasználói felületek (GUI) • Gnome • KDE
Linux belépési módok • accountra van szükség • username éspassword • helyi login • távolilogin • parancs soros terminál • grafikus belépés • ssh[-X] username@machineAddress
Egyszerű parancsok • Tab-ra kiegészítés • Fel nyílra ugrik az előző parancsra • Bashhistory • Reguláris kifejezések • parancs & - parancsok háttérben futtatása • | - (pipe) parancsok összefűzése • man - manual (help) • Apropos • gcc – c fordító
Egyszerű parancsok • grep – kifejezés keresés • less, more, cat • emacs, gedit, vim ,... • pwd- shows the current directory • cd - changes directory • / -abszolút path • ./ -relatív path • ../ - egy könyvtárral feljebb • ls • mkdir- makes directory • rmdir - removes directory • cp - copies • mv - moves • rm - removes [-r]
Feladat • Ellenőrizzük azt az állítást, hogy a tőzsdei részvényárfolyamok véletlen bolyongással modellezhetőek! • Azaz hasonlítsunk össze véletlen bolyongási adatokat valódi részvény árfolyamokkal • Az statisztikai összehasonlítás módja pl. az eloszlás függvényeik, vagy a hisztogramjaik összehasonlítása
Megoldás lépései • Két részfeladat: • Véletlen bolyongás megvalósítása és vizsgálata • Részvény árfolyam vizsgálata • Véletlen bolyongás leprogramozása • c nyelven • adatsor elemzése awk segítségével • ábrázolás gnuplottal • Részvény árfolyam vizsgálata • adatsor letöltés: GoogleFinance • adatsor elemzése awk segítségével • ábrázolás gnuplottal • Eredmények összehasonlítása, interpretációja, diszkusszió
Véletlen bolyongás • Diszkrét időlépés • Normális eloszlású növekmény • 1D, 2D, 3D
Véletlen bolyongás – c kód #include <stdlib.h>// függvény könyvtár betöltés #include <math.h> int main () {// program törzs kezdete inti;// változó deklarálások double x1,x2,y1,y2; double pos=0; srand(102);// pszeudovéletlenszám generátor inicializálás for (i=0;i<50000;i++) {// bolyongás léptetése x1=(double)rand()/RAND_MAX;// egyenletes eloszlású pszedo véletlen szám generálás x2=(double)rand()/RAND_MAX; y1 = sqrt( - 2*log(x1) )*cos( 2*3.14*x2 );// normális eloszlású véletlen szám generálás y2 = sqrt( - 2*log(x1) )*sin( 2*3.14*x2 ); pos+=y1;// pozíció update printf("%.3f %.3f %.3f %.3f %.3f\n",x1,x2,y1,y2,pos);// eredmény kiírás } return0;// visszatérési érték }
Véletlen bolyongás – eredmény $ gcc randomwalk.c –o randomwalk-lm# forráskódunk futtathatóvá fordítása $ ./randomwalk# futtatás 0.380 0.863 0.901 -1.060 0.901 0.285 0.848 0.908 -1.299 1.809 0.566 0.067 0.972 0.438 2.781 0.786 0.864 0.454 -0.524 4.862 0.359 0.708 -0.380 -1.380 4.482 0.750 0.633 -0.509 -0.561 3.973 0.993 0.785 0.026 -0.118 4.000 0.688 0.650 -0.507 -0.700 3.492 …. …. …. X1 X2 Y1 Y2 POS
Véletlen bolyongás – AWK feldolgozás $ cat randomwalk.dat | cut -f3 -d" " > randomwalk_nov.dat # Y1 adatsor kiválasztása, mint növekmény $ MAX=`cat randomwalk_nov.dat | sort -n | tail -1`# legnagyobb növekmény $ MIN=`cat randomwalk_nov.dat | sort -n | head -1` # legkisebb növekmény $ echo $MAX $MIN# kiírás $ cat randomwalk_nov.dat | awk -v min=$MIN -v max=$MAX -v N=100 'BEGIN{for (i=0;i<N;i++) {h[i]=0;}}{h[int(($1-min)/((max-min)/N))]++} END{for (i=0;i<N;i++) print i*((max-min)/N)+min,h[i]}' > hist_randomwalk.dat # AWK hisztogram készítés
AWK hisztogram készítés $ cat randomwalk_nov.dat | awk-v min=$MIN -v max=$MAX -v N=100 ‘ BEGIN{ for (i=0;i<N;i++) {h[i]=0;} } { h[int(($1-min)/((max-min)/N))]++ } END{ for (i=0;i<N;i++) print i*((max-min)/N)+min,h[i] } ' > hist_randomwalk.dat
Részvény árfolyam vizsgálat Date,Open,High,Low,Close,Volume 22-Oct-08,19.31,20.19,18.13,19.33,37919533 21-Oct-08,20.14,21.48,19.34,20.20,40227081 20-Oct-08,20.17,20.79,19.07,19.77,32976429 17-Oct-08,17.97,20.26,17.52,19.24,46668538 16-Oct-08,18.60,19.25,16.93,18.69,63137199 15-Oct-08,20.23,20.46,17.61,18.13,86911035 14-Oct-08,21.21,24.20,20.55,21.94,138553805 13-Oct-08,15.43,19.06,12.66,18.10,199815501 10-Oct-08,9.19,11.30,6.71,9.68,207088145 9-Oct-08,17.98,18.30,11.95,12.45,102932615 8-Oct-08,16.99,19.47,16.23,16.80,40976047 7-Oct-08,24.28,24.28,14.13,17.65,90516780 6-Oct-08,22.49,24.40,20.17,23.50,27022695 3-Oct-08,24.40,26.73,22.51,23.92,30168804 2-Oct-08,23.91,25.12,23.10,23.21,17885644 1-Oct-08,22.72,24.87,21.76,24.42,36159359 …
Részvény árfolyam vizsgálat - AWK Date,Open,High,Low,Close,Volume 22-Oct-08,19.31,20.19,18.13,19.33,37919533 21-Oct-08,20.14,21.48,19.34,20.20,40227081 20-Oct-08,20.17,20.79,19.07,19.77,32976429 17-Oct-08,17.97,20.26,17.52,19.24,46668538 16-Oct-08,18.60,19.25,16.93,18.69,63137199 15-Oct-08,20.23,20.46,17.61,18.13,86911035 14-Oct-08,21.21,24.20,20.55,21.94,138553805 13-Oct-08,15.43,19.06,12.66,18.10,199815501 10-Oct-08,9.19,11.30,6.71,9.68,207088145 9-Oct-08,17.98,18.30,11.95,12.45,102932615 8-Oct-08,16.99,19.47,16.23,16.80,40976047 7-Oct-08,24.28,24.28,14.13,17.65,90516780 6-Oct-08,22.49,24.40,20.17,23.50,27022695 3-Oct-08,24.40,26.73,22.51,23.92,30168804 2-Oct-08,23.91,25.12,23.10,23.21,17885644 1-Oct-08,22.72,24.87,21.76,24.42,36159359 … $ cat data.csv | cut -f5 -d"," > close.dat# záróárfolyamok kivágása
Részvény árfolyam vizsgálat - AWK $ cat close.dat | awk '{if (NR>2) {print $1-old};old=$1}' > diff.dat # növekmény lépésenkénti meghatározása $ MAX=`cat diff.dat | sort -n | tail -1` # legnagyobb növekmény $ MIN=`cat diff.dat | sort -n | head -1` # legkisebb növekmény $ cat diff.dat | awk -v min=$MIN -v max=$MAX -v N=250 'BEGIN{for (i=0;i<N;i++) {h[i]=0;}}{h[int(($1-min)/((max-min)/N))]++} END{for (i=0;i<N;i++) print i*((max-min)/N)+min,h[i]}' > reszveny_hist.dat# AWK hisztogram készítés, ld. pár oldallal korábban
Gyakorlat • Az előző feladat egyéni megvalósítása • Kapott két hisztogram ábrázolása gnuplottal • A kapott eredmények összehasonlítása, közös interpretációja, diszkusszió
Kérdések? haga@elte.hu