Informatika1-2007/Gyakorlat2

A MathWikiből
(Változatok közti eltérés)
 
9. sor: 9. sor:
 
*** tálca (taskbar)
 
*** tálca (taskbar)
 
*** virtual desktop (pl. Ctrl-Alt-Bal, Ctrl-Alt-Jobb)
 
*** virtual desktop (pl. Ctrl-Alt-Bal, Ctrl-Alt-Jobb)
** szöveges, parancssori felület (pl. Ctrl-Alt-F1 ... Ctrl-Alt-F6)
+
** szöveges, parancssori felület (command line) (pl. Ctrl-Alt-F1 ... Ctrl-Alt-F6)
 
*** karakterek téglalap alakú elrendezése
 
*** karakterek téglalap alakú elrendezése
 
*** parancssor
 
*** parancssor
 
*** szöveges, nem parancssori programok, pl. webböngészők
 
*** szöveges, nem parancssori programok, pl. webböngészők
 +
**** Azért szeretjük a paranccsori és az egyéb szöveges programokat, mert ezeket távolról (pl. ssh-n keresztül) is lehet futtatni, tehát a parancs kiadásához és a program vezérléséhez nem kell az adott gép mellett ülni, elég, ha van internet-kapcsolat.
 
** terminálablak (pl. xterm)
 
** terminálablak (pl. xterm)
* hardver (a felsorolás csak a legfontosabb hardvereszközöket említi)
+
* hardver (hardware) (a felsorolás csak a legfontosabb hardvereszközöket említi)
** számítógép
+
** számítógép (computer)
*** processzor
+
*** processzor (processor)
*** memória
+
*** memória (memory)
*** háttértáróló
+
*** háttértáróló (storage)
 
** kábel
 
** kábel
 
** külső hardvereszközök
 
** külső hardvereszközök
*** képernyő
+
*** képernyő (monitor, screen, display)
*** billentyűzet
+
*** billentyűzet (keyboard)
*** egér
+
*** egér (mouse)
*** nyomtató
+
*** nyomtató (printer)
*** lapolvasó
+
*** lapolvasó (scanner)
*** fényképezőgép, kamera, telefon, PDA stb.
+
*** fényképezőgép (camera), videókamera (camcoder), telefon, PDA stb.
 
** hálózati eszköz
 
** hálózati eszköz
 
*** modem
 
*** modem
32. sor: 33. sor:
 
*** kapcsoló (switch)
 
*** kapcsoló (switch)
 
*** router, gateway, tűzfal
 
*** router, gateway, tűzfal
*** vezetéknélküli elérési pont
+
*** vezetéknélküli elérési pont (wireless access point)
 
* szoftver
 
* szoftver
** alkalmazás (a felsorolás nem teljes)
+
** alkalmazás (application) (a felsorolás nem teljes)
*** (sima) szövegszerkesztő
+
*** (sima) szövegszerkesztő (text editor)
**** Gedit
+
**** Gedit (Unix, GNOME)
**** Kate
+
**** Kate (Unix, KDE)
**** Notepad++
+
**** Notepad++ (Windows)
**** Textpad
+
**** Textpad (Windows)
**** SCIte
+
**** SCIte (Unix és Windows)
**** vim
+
**** vim (Unix terminálablak, Windows)
**** EMACS
+
**** EMACS (Unix és Windows)
**** joe (UNIX terminálablak)
+
**** joe (Unix terminálablak)
 
**** Notepad = Jegyzettömb
 
**** Notepad = Jegyzettömb
*** dokumentumszerkesztő
+
*** dokumentumszerkesztő (word processor)
**** OpenOffice Writer
+
**** OpenOffice Writer (Unix és Windows)
**** Microsoft Word
+
**** Microsoft Word (Windows)
*** táblázatkezelő
+
*** táblázatkezelő (spreadsheet)
**** OpenOffice Calc
+
**** OpenOffice Calc (Unix és Windows)
**** Microsoft Excel
+
**** Microsoft Excel (Windows)
*** webböngésző
+
*** webböngésző (web browser)
**** Mozilla Firefox = IceApe
+
**** Mozilla Firefox = IceApe (Unix és Windows)
**** Opera
+
**** Opera (Unix és Windows)
**** Microsoft Internet Explorer
+
**** Microsoft Internet Explorer (Windows)
*** médialejátszó
+
**** links, links2 (Unix, szöveges)
**** MPlayer
+
**** lynx (Unix, szöveges, régi)
**** Windows Media Player
+
*** médialejátszó (media player)
*** levelezőprogram = levelezőkliens
+
**** MPlayer (Unix és Windows)
**** Mozilla Thunderbird = IceDove
+
**** Windows Media Player (Windows)
**** Microsoft Outlook
+
*** levelezőprogram = levelezőkliens (mail client, mail user agent, MUA)
**** Pine
+
**** Mozilla Thunderbird = IceDove (Unix és Windows)
**** Mutt
+
**** Microsoft Outlook (Windows)
 +
**** Pine (Unix és Windows0
 +
**** Mutt (Unix)
 
*** computer algebra program
 
*** computer algebra program
**** Maple: numerikus számolás, absztrakt és pontos számolás (törtek, gyökök, szögfüggvények stb.), analízis (határérték, deriválás, integrálás), függvényábrázolás stb.
+
**** Maple (Unix és Windows): numerikus számolás, absztrakt és pontos számolás (törtek, gyökök, szögfüggvények stb.), analízis (határérték, deriválás, integrálás), függvényábrázolás stb.
**** Mathematica: a Maple-hez hasonló célokra
+
**** Mathematica (Unix és Windows): a Maple-hez hasonló célokra
**** GAP: absztrakt algebrához (permutációk, csoportok, testek, hálók stb.)
+
**** GAP (Unix és esetleg Windows): absztrakt algebrához (permutációk, csoportok, testek, hálók stb.)
**** Matlab: gyors mátrixműveletek, de szimbolikus számolásra nem képes
+
**** Matlab (Windows): gyors mátrixműveletek, de szimbolikus számolásra nem képes
**** Octave: ingyenes majdnem Matlab-klón
+
**** Octave (Unix és Windows): ingyenes majdnem Matlab-klón
*** fájlkezelő
+
*** fájlkezelő (file manager)
 
**** Norton Commander-klón
 
**** Norton Commander-klón
 
***** Midnight Commander (Unix)
 
***** Midnight Commander (Unix)
75. sor: 78. sor:
 
***** FAR Manager (Windows)
 
***** FAR Manager (Windows)
 
***** Volkov Commander (DOS)
 
***** Volkov Commander (DOS)
**** Windows intéző
+
**** Windows intéző (Windows
**** Nautilus (Unix, Gnome)
+
**** Nautilus (Unix, GNOME)
*** ablakkezelő, desktop-kezelő
+
*** ablakkezelő (window manager, desktop-kezelő (desktop environment)
 
**** Windows ablakkezelő (Windows 95, Windows XP, Vista)
 
**** Windows ablakkezelő (Windows 95, Windows XP, Vista)
**** icewm
+
**** icewm (Unix)
**** GNOME desktop
+
**** GNOME desktop (Unix, GNOME)
**** KDE desktop
+
**** KDE desktop (Unix, KDE)
**** xfce
+
**** xfce (Unix)
*** terminálablak
+
*** terminálablak (terminal window)
**** Windows Parancssor
+
**** Windows Parancssor (Windows)
 
**** XTerm (Unix)
 
**** XTerm (Unix)
**** GNOME Terminal
+
**** GNOME Terminal (Unix, GNOME)
**** KDE Terminal
+
**** KDE Terminal (Unix, KDE)
*** folyamatkezelő
+
*** folyamatkezelő (task manager)
 
**** Task Manager (Windows)
 
**** Task Manager (Windows)
 
**** top (Unix terminálablak)
 
**** top (Unix terminálablak)
96. sor: 99. sor:
 
**** bash (Unix)
 
**** bash (Unix)
 
**** zsh (Unix)
 
**** zsh (Unix)
*** távoli parancssor
+
*** távoli parancssor (remote shell)
 
**** ssh (főleg Unix)
 
**** ssh (főleg Unix)
 
**** PuTTY (ssh-kliens Windowsra)
 
**** PuTTY (ssh-kliens Windowsra)
*** szoftverfejlesztést segítő program (pl. fordító)
+
*** szöveges program továbbfuttatása (terminal session management)
*** játékprogram
+
**** screen (Unix)
** operációs rendszer
+
*** szoftverfejlesztést segítő program (pl. fordító (compiler))
 +
*** játékprogram (game)
 +
** operációs rendszer (operating system)
 +
*** operációs rendszerek (a lista egyáltalán nem teljes)
 +
**** Microsoft által gyártott
 +
***** MS-DOS
 +
***** Windows 3.1
 +
***** Windows 95
 +
***** Windows NT
 +
***** Windows XP
 +
***** Windows Vista
 +
***** Windows CE (nem PC-re, hanem kéziszámítógépekre)
 +
**** Unix
 +
***** Linux (szabad szoftver, egyes fajtái fizetősek)
 +
****** Debian disztribúció (szerverekre ajánlott)
 +
******* Sarge kiadás
 +
******* Etch kiadás (ez van fent a .math.bme.hu laborokban)
 +
****** Ubuntu disztribúció (kezdőknek ajánlott)
 +
****** UHU disztribúció (magyar fejlesztés kezdő magyaroknak ajánlott)
 +
****** Gentoo disztribúció (profiknak ajánlott)
 +
****** Red Hat, Fedora
 +
****** Mandrake
 +
***** FreeBSD (szabad szoftver)
 +
***** egyéb BSD-k (szabad szoftver)
 +
***** Mac OS X
 +
***** Solaris (a Sun gyártja, egyes fajtái ingyenesen letölthetők)
 +
***** AIX (az IBM gyártja)
 +
**** egyéb
 +
***** FreeDOS (szabad szoftver)
 
*** kernel
 
*** kernel
 
**** A kernel a gép bekapcsolása során induló, kikapcsolásig futó alapszoftver.
 
**** A kernel a gép bekapcsolása során induló, kikapcsolásig futó alapszoftver.
107. sor: 138. sor:
 
**** feladatai
 
**** feladatai
 
***** memóriagazdálkodás (pl. cache, swap)
 
***** memóriagazdálkodás (pl. cache, swap)
***** folyamatütemezés
+
***** folyamatütemezés (CPU scheduling, process scheduling)
***** hardvereszközök kezelése: I/O (bemenet-kimenet), eszközmeghajtók
+
***** hardvereszközök kezelése: I/O (bemenet--kimenet), I/O ütemezés (I/O scheduling), eszközmeghajtók
***** védelem: jogosulatlan műveletvégrehajtás megtagadása
+
***** védelem (protection): jogosulatlan műveletvégrehajtás megtagadása
 
***** energiagazdálkodás (akkumulátor, energiatakarékos mód, halk mód)
 
***** energiagazdálkodás (akkumulátor, energiatakarékos mód, halk mód)
***** fájlrendszerek kezelése
+
***** fájlrendszerek (filesystem) kezelése
 
***** lemezkezelés (pl. redundancia RAID-del)
 
***** lemezkezelés (pl. redundancia RAID-del)
***** folyamatok közti kommunikáció bonyolítása
+
***** folyamatok közti kommunikáció (interprocess communication) bonyolítása
 
***** internetes és egyéb hálózati kommunkáció bonyolítása a megfelelő protokollokkal
 
***** internetes és egyéb hálózati kommunkáció bonyolítása a megfelelő protokollokkal
 +
**** rendszerhívás (system call): olyan függvény/eljárás/programrészlet a kernelben, melyet az alkalmazás hív
 +
***** céljai, linuxos példákkal
 +
****** nyitott fájlok kezelése: open(), creat() close(), pipe(), dup(), dup2(), read(), write(), lseek(), select(), fcntl(), ioctl(), fstat() stb.
 +
****** fájl- és könyvtárkezelés: link(), unlink((), symlink(), rename(), mkdir(), rmdir(), mknod(), chmod(), chown(), lchown(), stat(), lstat(), utime(), access()
 +
****** internetes kommunikáció: socket(), socketpair(), connect(), bind(), listen(), accept(), setsockopt() stb.
 +
****** folyamatkezelés: pause(), getpid(), getppid(), exit(), kill(), fork(), execve(), wait(), waitpid(), nice(), umask(), chdir() stb.
 +
****** memóriagazdálkodás: sbrk(), mmap(), munmap() stb.
 +
****** időkezelés: time(), stime(), times() stb.
 +
****** signalkezelés: alarm(), sigaction(), ssetmask(), sgetmask() stb.
 +
***** Az egyes rendszerhívásokról terminálablakban leírás olvasható, pl. <code>man 2 pipe</code> paranccsal. A leírás C programozási nyelvet feltételez.
 
*** beállítóprogramok
 
*** beállítóprogramok
**** Windows Control Panel = Vezérlőpult
+
**** Windows Control Panel = Vezérlőpult (Windows)
**** GNOME Control Center
+
**** GNOME Control Center (Unix, GNOME)
**** KDE Control Center
+
**** KDE Control Center (Unix, KDE)
**** Windows Registry Editor
+
**** Windows Registry Editor (Windows)
*** segédprogramok
+
*** segédprogramok (tools, utilities)
 
* folyamat
 
* folyamat
** a folyamat fogalma
+
** a folyamat (process) fogalma
** a szál fogalma
+
** a szál (thread) fogalma
 
** a folyamat részei
 
** a folyamat részei
*** memóriaterület: programkód és változók (Neumann-elv)
+
*** memóriaterület (memory image): programkód és adatok (Neumann-elv: progam és adat ugyanabban a memóriában van)
*** futási verem: épp hol tart a végrehajtás
+
*** futási verem (stack): épp hol tart a végrehajtás
*** a programkódot tartalmazó fájl neve (pl. <code>/bin/ls</code>)
+
*** a programkódot tartalmazó fájl neve (binary executable) (pl. <code>/bin/ls</code>)
*** indítási argumentumok (paraméterek): stringekből álló lista
+
*** indítási argumentumok (paraméterek, command line arguments): stringekből álló lista
*** környezeti változók: kulcs=érték párok listája, pl. <code>HOME=/home/student/pts</code>
+
*** környezeti változók (environment variables): kulcs=érték párok listája, pl. <code>HOME=/home/student/pts</code>
*** nyitott fájlok és egyéb fájlszerű dolgok (pl. csővezetékek, socket-kapcsolatok)
+
*** nyitott fájlok (open files) és egyéb fájlszerű dolgok (pl. csővezetékek (pipe), socket-kapcsolatok)
*** egyéb erőforrások (Unix alatt pl. osztott memóriaterületek, szemaforok, signal handlerek)
+
**** stdin (0, <): szabványos bemenet, alapesetben a terminálablakba gépelt szöveg innen olvasható
** folyamathierarchia Unix alatt
+
**** stdout (1, >): szabványos kimenet, alapesetben a program által erre írt szöveg a terminálablakban jelenik meg
 +
**** stderr (2, 2>): szabványos hibakimenet, alapesetben a program által erre írt hibaüzenetek a terminálablakban jelennek meg
 +
*** egyéb erőforrások (resources) (Unix alatt pl. osztott memóriaterületek (shared memory), szemaforok (semaphores), signal handlerek (signal handlers))
 +
** folyamatok és folyamathierarchia Unix alatt
 
*** PID (Process ID, folyamat-azonosító): 1 és 65535 közötti egész szám
 
*** PID (Process ID, folyamat-azonosító): 1 és 65535 közötti egész szám
 
*** Rendszerindításkor az init folyamat (<code>/sbin/init</code>) indul, PID=1.
 
*** Rendszerindításkor az init folyamat (<code>/sbin/init</code>) indul, PID=1.
 
*** Egy futó folyamat lemásolhatja magát a fork() rendszerhívással.
 
*** Egy futó folyamat lemásolhatja magát a fork() rendszerhívással.
 
*** Minden másolat megjegyzi az ő szülő folyamatának PID-jét (PPID, Parent PID), ezáltal egy (gráfelméleti értelemben) fa alakul ki, melynek gyökere az init folyamat.
 
*** Minden másolat megjegyzi az ő szülő folyamatának PID-jét (PPID, Parent PID), ezáltal egy (gráfelméleti értelemben) fa alakul ki, melynek gyökere az init folyamat.
*** gyermek folyamat
+
*** gyermek folyamat (child process)
*** A gyermek folyamat (majdnem) minden tekintetben a szülő másolata lesz, örökli pl. a fork() pillanatában nyitott fájlokat és a környezeti változókat.
+
*** A gyermek folyamat (majdnem) minden tekintetben a szülő (parent process) másolata lesz, örökli pl. a fork() pillanatában nyitott fájlokat és a környezeti változókat.
 
*** A folyamat befejeződhet egy kilépési kóddal (exit code, 0..127) vagy signallal (pl. SIGINT = Ctrl-C, SIGQUIT = Ctrl-Zárószöglet, SIGTERM, SIGKILL, SIGHUP = terminálablak becsukása, SIGSEGV = hibás memóriaművelet). A kilépési kódos befejeződést a folyamat saját maga kezdeményezheti, a signalos befejeződést akárki (kill() rendszerhívás, kill, killall és pkill parancsok).
 
*** A folyamat befejeződhet egy kilépési kóddal (exit code, 0..127) vagy signallal (pl. SIGINT = Ctrl-C, SIGQUIT = Ctrl-Zárószöglet, SIGTERM, SIGKILL, SIGHUP = terminálablak becsukása, SIGSEGV = hibás memóriaművelet). A kilépési kódos befejeződést a folyamat saját maga kezdeményezheti, a signalos befejeződést akárki (kill() rendszerhívás, kill, killall és pkill parancsok).
 
*** A gyermek folyamat befejeződéséről a szülő kap értesítést az operációs rendszertől (wait() rendszerhívás). A szülő megkapja a kilépési kódot vagy a befejezést okozó signal kódját.
 
*** A gyermek folyamat befejeződéséről a szülő kap értesítést az operációs rendszertől (wait() rendszerhívás). A szülő megkapja a kilépési kódot vagy a befejezést okozó signal kódját.
147. sor: 191. sor:
 
*** Másik program indításakor a folyamat legtöbb része megváltozik (pl. memóriaterület, futási verem, fájlnév, indítási argumentumok, környezeti változók), más részek pedig megváltozhatnak (pl. nyitott fájlok, signal handlerek).
 
*** Másik program indításakor a folyamat legtöbb része megváltozik (pl. memóriaterület, futási verem, fájlnév, indítási argumentumok, környezeti változók), más részek pedig megváltozhatnak (pl. nyitott fájlok, signal handlerek).
 
*** Ha program indításakor a fájlnévben van perjel (pl. <code>/bin/ls</code>, <code>./a.out</code>), akkor a megadott könyvtárban keresi a rendszer a programfájlt, ellenkező esetben a <code>PATH</code> környezeti változóban kettősponttal elválasztot könyvtárakat próbálja (balról jobbra) végig.
 
*** Ha program indításakor a fájlnévben van perjel (pl. <code>/bin/ls</code>, <code>./a.out</code>), akkor a megadott könyvtárban keresi a rendszer a programfájlt, ellenkező esetben a <code>PATH</code> környezeti változóban kettősponttal elválasztot könyvtárakat próbálja (balról jobbra) végig.
*** Példa: olyan programot írunk, amely az ''ls'' parancs kimenetének sorait számolja meg. Ehhez a program fork()-ol, a gyermek folyamat execve()-zi az ''ls'' parancsot. Ahhoz, hogy a parancs kimenete a szülőhöz eljusson, a fork() előtt a szülő egy csővezetéket hoz létre, melynek egyik végére a gyermek ír, a másik végét pedig a szülő olvassa. Az ellentétes végeket mindkét fél bezárja (tehát a szülő rögtön bezárja az írható véget, a gyerek pedig az execve() előtt bezárja az olvasható véget).
+
*** Bonyolult példa: olyan programot írunk, amely az <code>ls</code> parancs kimenetének sorait számolja meg. Ehhez a program fork()-ol, a gyermek folyamat execve()-zi az ''ls'' parancsot. Ahhoz, hogy a parancs kimenete a szülőhöz eljusson, a fork() előtt a szülő egy csővezetéket hoz létre, melynek egyik végére a gyermek ír, a másik végét pedig a szülő olvassa. Az ellentétes végeket mindkét fél bezárja (tehát a szülő rögtön bezárja az írható véget, a gyerek pedig az execve() előtt bezárja az olvasható véget). A gyermek az execve() előtt a szabványos kimenetét a csővezetékre irányítja dup2()-vel, így az ls parancs ugyanúgy működhet, mint terminálablak esetén (stdout-ra ír).
 +
*** shebang (<code>#!</code>): ha az execve()-vel futtatandó programfájl <code>#!</code> jelsorozattal kezdődik, akkor a kernel az első sorban megadott egy vagy két szót beszúrja a programnév és az argumentumok elé. Tehát ha például a <code>foo.sh</code> fájl első sora <code>#! /bin/bash --</code>, akkor a <code>./foo.sh pikk pakk 42</code> parancs hatására a <code>/bin/bash -- ./foo.sh pikk pakk 42</code> parancs kezd futni, vagyis a <code>/bin/bash</code> program a <code>-- ./foo.sh pikk pakk 42</code> argumentumokkal.
 +
*** A shebang felhasználható ún. shell szkriptek (shell script) és egyéb szkriptek írására. A szkript tipikusan egy gyorsan megírt, rövid, tömör program (tipikus terjedelem: 100 .. 10000 bájt), ami egy konkrét feladatot automatizál: helyettesíti a mechanikus kattintgatást.
 +
*** multitaszk operációs rendszer (multitask operating system): Olyan operációs rendszer, amely egyszerre több folyamatot is futtatni képes (pl. Unix, Windows). Általában egyszerre több folyamat van, mint processzor, tehát az operációs rendszer kiválaszt néhány folyamatot, melyeket egy rövid ideig (néhány milliszekundum) futtat (minden processzorra 0 vagy 1 db folyamatot), majd a rövid idő letelte után esetleg más folyamatokat választ ki futásra. A folyamatok futásra kiválasztását ütemezésnek (CPU scheduling) nevezzük.
 +
*** system load (http://en.wikipedia.org/wiki/System_load): a load egy pozitív valós mérőszám arra, hogy hány aktív folyamat fut a rendszerben. Linux alatt aktívnak számít egy folyamat, ha épp ő fut, futásra kész (de várnia kell, amíg sorra kerül), vagy I/O (bemenet--kimenet) művelet befejeződésére vár. A load azt is megmondja, hogy hány százalékos a processzorok kihasználtsága. Ha egy rendszeren pl. tartósan 6.0 közelében van a load, akkor a gépbe 6 processzort téve a teljesítmény fokozható, de 6-nál több processzor fölösleges, mert úgysem lesz mind kihasználva. Másik példa: ha egy 2 processzoros rendszeren tartósan 2.0 alatt van a load, akkor a processzorok nincsenek teljesen kihasználva, valamelyik processzor az ideje nagy részét várakozással tölti, hogy ő is kapjon feladatot. Ha egy asztali Linux rendszerhez percekig nem nyúlunk hozzá, akkor 0-hoz közeli, 0.1 alatti értékre csökken a load, mivel a gép nem kapott feladatot.
 +
* shell-praktikák
 +
** a shell (burok, héj) fő feladatai
 +
*** parancssor beolvasása (nyílbillentűk, Backspace stb. kezelése)
 +
*** parancs értelmezése, a megfelelő program elindítása
 +
*** stdin, stdout és stderr és egyéb fájlok átirányítása
 +
*** folyamatok összekapcsolása csővezeték-rendszerben
 +
*** fájlnevek kiegészítése (pl. <code>*.txt</code>)
 +
*** a futó programok listázása, háttérbe és előtérbe rakása
 +
*** programozási lehetőségek (pl. változó, feltétel, ciklus, függvény) biztosítása, shell szkriptek futtatása
 +
** Részletes információ a Bash shellről a terminálablakban kiadott <code>man 2 bash</code> paranccsal.
 +
** Terminálablak nyitásakor a <code>~/.bashrc</code> fut le, ssh és egyéb belépés után a <code>~/.bash_profile</code>.
 +
** Az ékezetes betűk parancssorba írásához és a PageUp-pal és PageDown-nal történő history-kereséshez az ~/.inputrc fájlukba írjuk bele:
  
!! stdin, stdout, stderr
+
set meta-flag on
!! szkriptek, #! shebang
+
set input-meta on
!! szoftvereknél Windows és Linux jelzése
+
set convert-meta off
!! gyakorlatias
+
set output-meta on
!! vicces
+
"\e[5~": history-search-backward
!! folyamatkezelő parancsok: ps, top, kill, killall, pgrep, pkill
+
"\e[6~": history-search-forward
!! ^C, ^], ^Z, jobs, fg, bg, fg %1
+
 
!! PATH környezeti változó
+
** Ezután vagy nyissunk új terminálablakot, vagy adjuk ki a <code>bind -f ~/.inputrc</code> parancsot.
 +
** Az aktuális terminálablakban használhatjuk a ''history'' parancsot, egy már becsukott terminálablak esetén pedig a ~/.bash_history fájlt. Érdemes e fájlból a legfontosabb parancsokat másik fájlba írni, mert a bash a régi bejegyzéseket eldobja. A limit megnövelhető, ha a ~/.bashrc-nkbe elhelyezzük az alábbi sort <code>export HISTSIZE=9999</code>.
 +
** Ha az ékezetes betűk nem stimmelnek, akkor az alábbiak egyikét tegyük:
 +
*** Adjuk ki az <code>export LC_CTYPE=hu_HU.UTF-8 LANG=hu_HU.UTF-8</code> parancsot, és pl. a Gnome terminál menüjében válasszuk az UTF-8 (Unicode) karakterkódolást.
 +
*** Adjuk ki az <code>export LC_CTYPE=hu_HU.ISO8859-2 LANG=hu_HU.ISO8859-2</code> parancsot, és pl. a Gnome terminál menüjében válasszuk az ISO-8859-2 (Latin 2, Central European) karakterkódolást.
 +
** példák a shell szintaxisára
 +
*** A <code>tac</code> program a bemenetét beolvassa, majd fordított sorsorrendben kiírja a sorokat.
 +
*** A <code>rev</code> program a bemenetét soronként beolvassa, és minden sort fordott betűsorrendben kiír.
 +
*** Ctrl-C-vel kilépve megszakítjuk a program futását (tehát a ''tac'' nem ír ki semmit, és kilép).
 +
*** Üres sorba írt Ctrl-D-vel kilépve jelezzük, hogy a bemenetnek vége (tehát a ''tac'' kiír mindent fordítva, majd kilép).
 +
*** <code>ls  /bin/bash  /bin/cat</code>
 +
*** <code>ls "/bin/bash  /bin/cat"</code>
 +
*** <code>ls '/bin/bash  /bin/cat'</code>
 +
*** <code>ls "/bin/bash  /bin/cat $PATH"</code>
 +
*** <code>ls '/bin/bash  /bin/cat $PATH'</code>
 +
*** <code>echo 'foo  bar' | rev</code>
 +
*** <code>(echo 'foo  bar'; echo baz) | rev | tac</code>
 +
*** <code>(echo 'foo  bar'; echo "Ez itt a $PATH") | tac</code>
 +
*** <code>ls | wc</code>
 +
*** <code>ls -a | wc -c</code>
 +
*** <code>echo /bin/*x*</code>
 +
*** <code>echo /bin/?a*</code>
 +
*** <code>echo /bin/?x*</code>: mivel nincs egyezés, benne marad a kérdőjel
 +
*** <code>ls /bin/?x*</code>
 +
*** <code>echo ~</code>
 +
*** <code>ls -d ~wettl/public_html/x*</code>
 +
*** <code>ls -l --sort=size >csokkeno_lista.txt</code>
 +
*** <code>ls -l --sort=size >/dev/null</code>
 +
*** <code>ls /nincs.ilyen >/dev/null 2>hiba; cat hiba; rm -f hiba</code>
 +
*** <code>ls /nincs.ilyen >/dev/null 2>&1 || echo hiba volt</code>
 +
*** <code>ls / >/dev/null 2>&1 || echo hiba volt</code>
 +
*** <code><be.txt sort | rev >ki.txt</code>
 +
*** <code>find ~ -type f | perl -pe 's@^.*/@@' | sort | uniq -cd | sort</code>: Gyakoriság szerinti csökkenő sorrendben listázza azokat a fájlneveket, melyek 1-nél többször fordulnak elő az aktuális felhasználó home könyvtárában. A fenti parancs pipeline demonstrálja a Unix shellprogramozás erejét.
 +
** az ''ls'' program fontosabb kapcsolói
 +
*** <code>-l</code>: részletes, többoszlopos kimenet
 +
*** <code>-a</code>: a ponttal kezdődő fájlneveket is
 +
*** <code>-d</code>: a parancssorban megadott könyvtáraknak csak a nevét, ne a tartalmát
 +
*** <code>-R</code>: a könyvtárakba rekurzívan belemenni
 +
* gyakorlati feladatok Linux, GNOME környezetben
 +
** Milyen folyamatok futnak éppen?
 +
*** <code>ps aux</code> parancs
 +
**** a: ne csak az aktuális felhasználó folyamatait mutassa
 +
**** u: mutassa a felhasználónevet is
 +
**** x: ne csak a terminálon (terminálablakban stb.) futó folyamatokat mutassa
 +
*** <code>top</code> terminálablakos program: alapból CPU-használat szerinti növekvő sorrendbe teszi a folyamatokat, máshogy is tudja rendezni
 +
*** grafikus eszköz
 +
** Az aktuális felhasználó milyen folyamatokat futtat éppen?
 +
*** <code>ps x</code> parancs
 +
** Mennyi a system load?
 +
*** <code>uptime</code> parancs mutatja az utolsó 1 perc, 5 perc és 15 perc átlagát
 +
*** a <code>top</code> is mutatja a felső sorban
 +
*** grafikus eszköz
 +
** Melyik folyamatunk ragadt be, és zabálja a sok processzoridőt?
 +
*** a <code>top</code> rögtön fölül írja ki
 +
** Melyik folyamatunk ragadt be, és zabálja a sok memóriát?
 +
*** a <code>top</code>-ban Shift-O, N, Enter, majd rögtön fölül írja ki
 +
** Állítsuk le (lőjük ki) a 42-es PID-ű folyamatot!
 +
*** <code>kill 42</code>: ha a folyamat beragadt, akkor lehet, hogy a killnek nincs hatása
 +
*** <code>kill -9 42</code>: szinte tuti kilövi (mert SIGKILL signalt küld)
 +
** Lőjük ki az összes saját IceApe-et!
 +
*** <code>ps x | grep -i iceape</code>: listázza
 +
*** <code>kill -9 ...</code>: PID alapján kilövi
 +
*** <code>killall -9 iceape-bin</code>: parancsnév egyezése alapján kilövi
 +
*** <code>pgrep -u $EUID '^iceape-bin$'</code>: csak a PID-eket listázza
 +
*** <code>ps u `pgrep -u $EUID '^iceape-bin$'`</code>: mindent listáz
 +
*** <code>pkill -9 -u $EUID '^iceape-bin$'</code>: parancsnév illeszkedése kilövi
 +
** Keressük meg az összes foo-t tartalmazó fájlnevet!
 +
*** <code>find / 2>/dev/null | grep '/[^/]*foo[^/]*$'</code>
 +
**** Ctrl-Z-vel állítsuk le
 +
**** <code>jobs</code>-szal listázzuk ki az adott shellből indított feladatokat
 +
**** <code>fg %1</code>-gyel folytassuk (1 helyébe esetleg mást írva)
 +
**** Ctrl-Z-vel állítsuk le
 +
**** <code>bg %1</code>-gyel folytassuk a háttérben
 +
**** <code>fg %1</code>-gyel folytassuk (az előtérben)
 +
**** Ctrl-C-vel vagy Ctrl-Zárószöglet-tel állítsuk le
 +
**** Ha beragad, se Ctrl-C, se Ctrl-Zárószöglet, se Ctrl-Z, se Ctrl-D nem működik, akkor zárjuk be a terminálablakot, és szükség esetén egy másik terminálablakból lőjük ki a megadott folyamatot.
 +
** Milyen környezeti változók aktívak?
 +
*** <code>env | sort</code> megmutatja a környezeti változókat
 +
*** <code>set | sort</code> megmutatja a környezeti változókat és a shell belső változóit is

A lap 2007. szeptember 17., 09:45-kori változata

Elméleti tematika:

  • felhasználói felületek
    • grafikus felület (pl. Ctrl-Alt-F7)
      • ablak
      • ablak címsora
      • start menü
      • program indítása (pl. Alt-F2)
      • tálca (taskbar)
      • virtual desktop (pl. Ctrl-Alt-Bal, Ctrl-Alt-Jobb)
    • szöveges, parancssori felület (command line) (pl. Ctrl-Alt-F1 ... Ctrl-Alt-F6)
      • karakterek téglalap alakú elrendezése
      • parancssor
      • szöveges, nem parancssori programok, pl. webböngészők
        • Azért szeretjük a paranccsori és az egyéb szöveges programokat, mert ezeket távolról (pl. ssh-n keresztül) is lehet futtatni, tehát a parancs kiadásához és a program vezérléséhez nem kell az adott gép mellett ülni, elég, ha van internet-kapcsolat.
    • terminálablak (pl. xterm)
  • hardver (hardware) (a felsorolás csak a legfontosabb hardvereszközöket említi)
    • számítógép (computer)
      • processzor (processor)
      • memória (memory)
      • háttértáróló (storage)
    • kábel
    • külső hardvereszközök
      • képernyő (monitor, screen, display)
      • billentyűzet (keyboard)
      • egér (mouse)
      • nyomtató (printer)
      • lapolvasó (scanner)
      • fényképezőgép (camera), videókamera (camcoder), telefon, PDA stb.
    • hálózati eszköz
      • modem
      • hub
      • kapcsoló (switch)
      • router, gateway, tűzfal
      • vezetéknélküli elérési pont (wireless access point)
  • szoftver
    • alkalmazás (application) (a felsorolás nem teljes)
      • (sima) szövegszerkesztő (text editor)
        • Gedit (Unix, GNOME)
        • Kate (Unix, KDE)
        • Notepad++ (Windows)
        • Textpad (Windows)
        • SCIte (Unix és Windows)
        • vim (Unix terminálablak, Windows)
        • EMACS (Unix és Windows)
        • joe (Unix terminálablak)
        • Notepad = Jegyzettömb
      • dokumentumszerkesztő (word processor)
        • OpenOffice Writer (Unix és Windows)
        • Microsoft Word (Windows)
      • táblázatkezelő (spreadsheet)
        • OpenOffice Calc (Unix és Windows)
        • Microsoft Excel (Windows)
      • webböngésző (web browser)
        • Mozilla Firefox = IceApe (Unix és Windows)
        • Opera (Unix és Windows)
        • Microsoft Internet Explorer (Windows)
        • links, links2 (Unix, szöveges)
        • lynx (Unix, szöveges, régi)
      • médialejátszó (media player)
        • MPlayer (Unix és Windows)
        • Windows Media Player (Windows)
      • levelezőprogram = levelezőkliens (mail client, mail user agent, MUA)
        • Mozilla Thunderbird = IceDove (Unix és Windows)
        • Microsoft Outlook (Windows)
        • Pine (Unix és Windows0
        • Mutt (Unix)
      • computer algebra program
        • Maple (Unix és Windows): numerikus számolás, absztrakt és pontos számolás (törtek, gyökök, szögfüggvények stb.), analízis (határérték, deriválás, integrálás), függvényábrázolás stb.
        • Mathematica (Unix és Windows): a Maple-hez hasonló célokra
        • GAP (Unix és esetleg Windows): absztrakt algebrához (permutációk, csoportok, testek, hálók stb.)
        • Matlab (Windows): gyors mátrixműveletek, de szimbolikus számolásra nem képes
        • Octave (Unix és Windows): ingyenes majdnem Matlab-klón
      • fájlkezelő (file manager)
        • Norton Commander-klón
          • Midnight Commander (Unix)
          • Total Commander (Windows)
          • FAR Manager (Windows)
          • Volkov Commander (DOS)
        • Windows intéző (Windows
        • Nautilus (Unix, GNOME)
      • ablakkezelő (window manager, desktop-kezelő (desktop environment)
        • Windows ablakkezelő (Windows 95, Windows XP, Vista)
        • icewm (Unix)
        • GNOME desktop (Unix, GNOME)
        • KDE desktop (Unix, KDE)
        • xfce (Unix)
      • terminálablak (terminal window)
        • Windows Parancssor (Windows)
        • XTerm (Unix)
        • GNOME Terminal (Unix, GNOME)
        • KDE Terminal (Unix, KDE)
      • folyamatkezelő (task manager)
        • Task Manager (Windows)
        • top (Unix terminálablak)
        • ps (Unix parancssor)
      • parancsértelmező, burok (shell)
        • command.com, cmd.exe (Windows)
        • bash (Unix)
        • zsh (Unix)
      • távoli parancssor (remote shell)
        • ssh (főleg Unix)
        • PuTTY (ssh-kliens Windowsra)
      • szöveges program továbbfuttatása (terminal session management)
        • screen (Unix)
      • szoftverfejlesztést segítő program (pl. fordító (compiler))
      • játékprogram (game)
    • operációs rendszer (operating system)
      • operációs rendszerek (a lista egyáltalán nem teljes)
        • Microsoft által gyártott
          • MS-DOS
          • Windows 3.1
          • Windows 95
          • Windows NT
          • Windows XP
          • Windows Vista
          • Windows CE (nem PC-re, hanem kéziszámítógépekre)
        • Unix
          • Linux (szabad szoftver, egyes fajtái fizetősek)
            • Debian disztribúció (szerverekre ajánlott)
              • Sarge kiadás
              • Etch kiadás (ez van fent a .math.bme.hu laborokban)
            • Ubuntu disztribúció (kezdőknek ajánlott)
            • UHU disztribúció (magyar fejlesztés kezdő magyaroknak ajánlott)
            • Gentoo disztribúció (profiknak ajánlott)
            • Red Hat, Fedora
            • Mandrake
          • FreeBSD (szabad szoftver)
          • egyéb BSD-k (szabad szoftver)
          • Mac OS X
          • Solaris (a Sun gyártja, egyes fajtái ingyenesen letölthetők)
          • AIX (az IBM gyártja)
        • egyéb
          • FreeDOS (szabad szoftver)
      • kernel
        • A kernel a gép bekapcsolása során induló, kikapcsolásig futó alapszoftver.
        • A kernel a hardvererőforrásokat kezeli és teszi elérhetővé az alkalmazások számára.
        • feladatai
          • memóriagazdálkodás (pl. cache, swap)
          • folyamatütemezés (CPU scheduling, process scheduling)
          • hardvereszközök kezelése: I/O (bemenet--kimenet), I/O ütemezés (I/O scheduling), eszközmeghajtók
          • védelem (protection): jogosulatlan műveletvégrehajtás megtagadása
          • energiagazdálkodás (akkumulátor, energiatakarékos mód, halk mód)
          • fájlrendszerek (filesystem) kezelése
          • lemezkezelés (pl. redundancia RAID-del)
          • folyamatok közti kommunikáció (interprocess communication) bonyolítása
          • internetes és egyéb hálózati kommunkáció bonyolítása a megfelelő protokollokkal
        • rendszerhívás (system call): olyan függvény/eljárás/programrészlet a kernelben, melyet az alkalmazás hív
          • céljai, linuxos példákkal
            • nyitott fájlok kezelése: open(), creat() close(), pipe(), dup(), dup2(), read(), write(), lseek(), select(), fcntl(), ioctl(), fstat() stb.
            • fájl- és könyvtárkezelés: link(), unlink((), symlink(), rename(), mkdir(), rmdir(), mknod(), chmod(), chown(), lchown(), stat(), lstat(), utime(), access()
            • internetes kommunikáció: socket(), socketpair(), connect(), bind(), listen(), accept(), setsockopt() stb.
            • folyamatkezelés: pause(), getpid(), getppid(), exit(), kill(), fork(), execve(), wait(), waitpid(), nice(), umask(), chdir() stb.
            • memóriagazdálkodás: sbrk(), mmap(), munmap() stb.
            • időkezelés: time(), stime(), times() stb.
            • signalkezelés: alarm(), sigaction(), ssetmask(), sgetmask() stb.
          • Az egyes rendszerhívásokról terminálablakban leírás olvasható, pl. man 2 pipe paranccsal. A leírás C programozási nyelvet feltételez.
      • beállítóprogramok
        • Windows Control Panel = Vezérlőpult (Windows)
        • GNOME Control Center (Unix, GNOME)
        • KDE Control Center (Unix, KDE)
        • Windows Registry Editor (Windows)
      • segédprogramok (tools, utilities)
  • folyamat
    • a folyamat (process) fogalma
    • a szál (thread) fogalma
    • a folyamat részei
      • memóriaterület (memory image): programkód és adatok (Neumann-elv: progam és adat ugyanabban a memóriában van)
      • futási verem (stack): épp hol tart a végrehajtás
      • a programkódot tartalmazó fájl neve (binary executable) (pl. /bin/ls)
      • indítási argumentumok (paraméterek, command line arguments): stringekből álló lista
      • környezeti változók (environment variables): kulcs=érték párok listája, pl. HOME=/home/student/pts
      • nyitott fájlok (open files) és egyéb fájlszerű dolgok (pl. csővezetékek (pipe), socket-kapcsolatok)
        • stdin (0, <): szabványos bemenet, alapesetben a terminálablakba gépelt szöveg innen olvasható
        • stdout (1, >): szabványos kimenet, alapesetben a program által erre írt szöveg a terminálablakban jelenik meg
        • stderr (2, 2>): szabványos hibakimenet, alapesetben a program által erre írt hibaüzenetek a terminálablakban jelennek meg
      • egyéb erőforrások (resources) (Unix alatt pl. osztott memóriaterületek (shared memory), szemaforok (semaphores), signal handlerek (signal handlers))
    • folyamatok és folyamathierarchia Unix alatt
      • PID (Process ID, folyamat-azonosító): 1 és 65535 közötti egész szám
      • Rendszerindításkor az init folyamat (/sbin/init) indul, PID=1.
      • Egy futó folyamat lemásolhatja magát a fork() rendszerhívással.
      • Minden másolat megjegyzi az ő szülő folyamatának PID-jét (PPID, Parent PID), ezáltal egy (gráfelméleti értelemben) fa alakul ki, melynek gyökere az init folyamat.
      • gyermek folyamat (child process)
      • A gyermek folyamat (majdnem) minden tekintetben a szülő (parent process) másolata lesz, örökli pl. a fork() pillanatában nyitott fájlokat és a környezeti változókat.
      • A folyamat befejeződhet egy kilépési kóddal (exit code, 0..127) vagy signallal (pl. SIGINT = Ctrl-C, SIGQUIT = Ctrl-Zárószöglet, SIGTERM, SIGKILL, SIGHUP = terminálablak becsukása, SIGSEGV = hibás memóriaművelet). A kilépési kódos befejeződést a folyamat saját maga kezdeményezheti, a signalos befejeződést akárki (kill() rendszerhívás, kill, killall és pkill parancsok).
      • A gyermek folyamat befejeződéséről a szülő kap értesítést az operációs rendszertől (wait() rendszerhívás). A szülő megkapja a kilépési kódot vagy a befejezést okozó signal kódját.
      • zombi folyamat (zombie process): olyan folyamat, amely már befejeződött, de a szülője még nem kérte az értesítést a befejeződésről.
      • Ha egy szülő folyamat befejeződik, a még futó gyermekeit az init folyamat örökli.
      • Ha az init folyamat befejeződik, akkor a gép leáll (kernel panic-kal).
      • Egy folyamat saját maga helyén egy másik programot indíthat (execve() rendszerhívás). Meg kell adni az indítandó program fájlnevét (pl. /bin/ls, /usr/bin/less), az indítási argumentumokat és a környezeti változókat.
      • Másik program indításakor a folyamat legtöbb része megváltozik (pl. memóriaterület, futási verem, fájlnév, indítási argumentumok, környezeti változók), más részek pedig megváltozhatnak (pl. nyitott fájlok, signal handlerek).
      • Ha program indításakor a fájlnévben van perjel (pl. /bin/ls, ./a.out), akkor a megadott könyvtárban keresi a rendszer a programfájlt, ellenkező esetben a PATH környezeti változóban kettősponttal elválasztot könyvtárakat próbálja (balról jobbra) végig.
      • Bonyolult példa: olyan programot írunk, amely az ls parancs kimenetének sorait számolja meg. Ehhez a program fork()-ol, a gyermek folyamat execve()-zi az ls parancsot. Ahhoz, hogy a parancs kimenete a szülőhöz eljusson, a fork() előtt a szülő egy csővezetéket hoz létre, melynek egyik végére a gyermek ír, a másik végét pedig a szülő olvassa. Az ellentétes végeket mindkét fél bezárja (tehát a szülő rögtön bezárja az írható véget, a gyerek pedig az execve() előtt bezárja az olvasható véget). A gyermek az execve() előtt a szabványos kimenetét a csővezetékre irányítja dup2()-vel, így az ls parancs ugyanúgy működhet, mint terminálablak esetén (stdout-ra ír).
      • shebang (#!): ha az execve()-vel futtatandó programfájl #! jelsorozattal kezdődik, akkor a kernel az első sorban megadott egy vagy két szót beszúrja a programnév és az argumentumok elé. Tehát ha például a foo.sh fájl első sora #! /bin/bash --, akkor a ./foo.sh pikk pakk 42 parancs hatására a /bin/bash -- ./foo.sh pikk pakk 42 parancs kezd futni, vagyis a /bin/bash program a -- ./foo.sh pikk pakk 42 argumentumokkal.
      • A shebang felhasználható ún. shell szkriptek (shell script) és egyéb szkriptek írására. A szkript tipikusan egy gyorsan megírt, rövid, tömör program (tipikus terjedelem: 100 .. 10000 bájt), ami egy konkrét feladatot automatizál: helyettesíti a mechanikus kattintgatást.
      • multitaszk operációs rendszer (multitask operating system): Olyan operációs rendszer, amely egyszerre több folyamatot is futtatni képes (pl. Unix, Windows). Általában egyszerre több folyamat van, mint processzor, tehát az operációs rendszer kiválaszt néhány folyamatot, melyeket egy rövid ideig (néhány milliszekundum) futtat (minden processzorra 0 vagy 1 db folyamatot), majd a rövid idő letelte után esetleg más folyamatokat választ ki futásra. A folyamatok futásra kiválasztását ütemezésnek (CPU scheduling) nevezzük.
      • system load (http://en.wikipedia.org/wiki/System_load): a load egy pozitív valós mérőszám arra, hogy hány aktív folyamat fut a rendszerben. Linux alatt aktívnak számít egy folyamat, ha épp ő fut, futásra kész (de várnia kell, amíg sorra kerül), vagy I/O (bemenet--kimenet) művelet befejeződésére vár. A load azt is megmondja, hogy hány százalékos a processzorok kihasználtsága. Ha egy rendszeren pl. tartósan 6.0 közelében van a load, akkor a gépbe 6 processzort téve a teljesítmény fokozható, de 6-nál több processzor fölösleges, mert úgysem lesz mind kihasználva. Másik példa: ha egy 2 processzoros rendszeren tartósan 2.0 alatt van a load, akkor a processzorok nincsenek teljesen kihasználva, valamelyik processzor az ideje nagy részét várakozással tölti, hogy ő is kapjon feladatot. Ha egy asztali Linux rendszerhez percekig nem nyúlunk hozzá, akkor 0-hoz közeli, 0.1 alatti értékre csökken a load, mivel a gép nem kapott feladatot.
  • shell-praktikák
    • a shell (burok, héj) fő feladatai
      • parancssor beolvasása (nyílbillentűk, Backspace stb. kezelése)
      • parancs értelmezése, a megfelelő program elindítása
      • stdin, stdout és stderr és egyéb fájlok átirányítása
      • folyamatok összekapcsolása csővezeték-rendszerben
      • fájlnevek kiegészítése (pl. *.txt)
      • a futó programok listázása, háttérbe és előtérbe rakása
      • programozási lehetőségek (pl. változó, feltétel, ciklus, függvény) biztosítása, shell szkriptek futtatása
    • Részletes információ a Bash shellről a terminálablakban kiadott man 2 bash paranccsal.
    • Terminálablak nyitásakor a ~/.bashrc fut le, ssh és egyéb belépés után a ~/.bash_profile.
    • Az ékezetes betűk parancssorba írásához és a PageUp-pal és PageDown-nal történő history-kereséshez az ~/.inputrc fájlukba írjuk bele:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
"\e[5~": history-search-backward
"\e[6~": history-search-forward
    • Ezután vagy nyissunk új terminálablakot, vagy adjuk ki a bind -f ~/.inputrc parancsot.
    • Az aktuális terminálablakban használhatjuk a history parancsot, egy már becsukott terminálablak esetén pedig a ~/.bash_history fájlt. Érdemes e fájlból a legfontosabb parancsokat másik fájlba írni, mert a bash a régi bejegyzéseket eldobja. A limit megnövelhető, ha a ~/.bashrc-nkbe elhelyezzük az alábbi sort export HISTSIZE=9999.
    • Ha az ékezetes betűk nem stimmelnek, akkor az alábbiak egyikét tegyük:
      • Adjuk ki az export LC_CTYPE=hu_HU.UTF-8 LANG=hu_HU.UTF-8 parancsot, és pl. a Gnome terminál menüjében válasszuk az UTF-8 (Unicode) karakterkódolást.
      • Adjuk ki az export LC_CTYPE=hu_HU.ISO8859-2 LANG=hu_HU.ISO8859-2 parancsot, és pl. a Gnome terminál menüjében válasszuk az ISO-8859-2 (Latin 2, Central European) karakterkódolást.
    • példák a shell szintaxisára
      • A tac program a bemenetét beolvassa, majd fordított sorsorrendben kiírja a sorokat.
      • A rev program a bemenetét soronként beolvassa, és minden sort fordott betűsorrendben kiír.
      • Ctrl-C-vel kilépve megszakítjuk a program futását (tehát a tac nem ír ki semmit, és kilép).
      • Üres sorba írt Ctrl-D-vel kilépve jelezzük, hogy a bemenetnek vége (tehát a tac kiír mindent fordítva, majd kilép).
      • ls /bin/bash /bin/cat
      • ls "/bin/bash /bin/cat"
      • ls '/bin/bash /bin/cat'
      • ls "/bin/bash /bin/cat $PATH"
      • ls '/bin/bash /bin/cat $PATH'
      • echo 'foo bar' | rev
      • (echo 'foo bar'; echo baz) | rev | tac
      • (echo 'foo bar'; echo "Ez itt a $PATH") | tac
      • ls | wc
      • ls -a | wc -c
      • echo /bin/*x*
      • echo /bin/?a*
      • echo /bin/?x*: mivel nincs egyezés, benne marad a kérdőjel
      • ls /bin/?x*
      • echo ~
      • ls -d ~wettl/public_html/x*
      • ls -l --sort=size >csokkeno_lista.txt
      • ls -l --sort=size >/dev/null
      • ls /nincs.ilyen >/dev/null 2>hiba; cat hiba; rm -f hiba
      • ls /nincs.ilyen >/dev/null 2>&1 || echo hiba volt
      • ls / >/dev/null 2>&1 || echo hiba volt
      • <be.txt sort | rev >ki.txt
      • find ~ -type f | perl -pe 's@^.*/@@' | sort | uniq -cd | sort: Gyakoriság szerinti csökkenő sorrendben listázza azokat a fájlneveket, melyek 1-nél többször fordulnak elő az aktuális felhasználó home könyvtárában. A fenti parancs pipeline demonstrálja a Unix shellprogramozás erejét.
    • az ls program fontosabb kapcsolói
      • -l: részletes, többoszlopos kimenet
      • -a: a ponttal kezdődő fájlneveket is
      • -d: a parancssorban megadott könyvtáraknak csak a nevét, ne a tartalmát
      • -R: a könyvtárakba rekurzívan belemenni
  • gyakorlati feladatok Linux, GNOME környezetben
    • Milyen folyamatok futnak éppen?
      • ps aux parancs
        • a: ne csak az aktuális felhasználó folyamatait mutassa
        • u: mutassa a felhasználónevet is
        • x: ne csak a terminálon (terminálablakban stb.) futó folyamatokat mutassa
      • top terminálablakos program: alapból CPU-használat szerinti növekvő sorrendbe teszi a folyamatokat, máshogy is tudja rendezni
      • grafikus eszköz
    • Az aktuális felhasználó milyen folyamatokat futtat éppen?
      • ps x parancs
    • Mennyi a system load?
      • uptime parancs mutatja az utolsó 1 perc, 5 perc és 15 perc átlagát
      • a top is mutatja a felső sorban
      • grafikus eszköz
    • Melyik folyamatunk ragadt be, és zabálja a sok processzoridőt?
      • a top rögtön fölül írja ki
    • Melyik folyamatunk ragadt be, és zabálja a sok memóriát?
      • a top-ban Shift-O, N, Enter, majd rögtön fölül írja ki
    • Állítsuk le (lőjük ki) a 42-es PID-ű folyamatot!
      • kill 42: ha a folyamat beragadt, akkor lehet, hogy a killnek nincs hatása
      • kill -9 42: szinte tuti kilövi (mert SIGKILL signalt küld)
    • Lőjük ki az összes saját IceApe-et!
      • ps x | grep -i iceape: listázza
      • kill -9 ...: PID alapján kilövi
      • killall -9 iceape-bin: parancsnév egyezése alapján kilövi
      • pgrep -u $EUID '^iceape-bin$': csak a PID-eket listázza
      • ps u `pgrep -u $EUID '^iceape-bin$'`: mindent listáz
      • pkill -9 -u $EUID '^iceape-bin$': parancsnév illeszkedése kilövi
    • Keressük meg az összes foo-t tartalmazó fájlnevet!
      • find / 2>/dev/null | grep '/[^/]*foo[^/]*$'
        • Ctrl-Z-vel állítsuk le
        • jobs-szal listázzuk ki az adott shellből indított feladatokat
        • fg %1-gyel folytassuk (1 helyébe esetleg mást írva)
        • Ctrl-Z-vel állítsuk le
        • bg %1-gyel folytassuk a háttérben
        • fg %1-gyel folytassuk (az előtérben)
        • Ctrl-C-vel vagy Ctrl-Zárószöglet-tel állítsuk le
        • Ha beragad, se Ctrl-C, se Ctrl-Zárószöglet, se Ctrl-Z, se Ctrl-D nem működik, akkor zárjuk be a terminálablakot, és szükség esetén egy másik terminálablakból lőjük ki a megadott folyamatot.
    • Milyen környezeti változók aktívak?
      • env | sort megmutatja a környezeti változókat
      • set | sort megmutatja a környezeti változókat és a shell belső változóit is
Személyes eszközök