Hibakeresés és elhárítás Linux rendszeren. Mátó Péter <atya@fsf.hu>



Hasonló dokumentumok
Szkriptnyelvek. 1. UNIX shell

chmod umask chown, chgrp

S z á m í t ó g é p e s a l a p i s m e r e t e k

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.

Operációs rendszerek gyak.

Linux alapok gyakorlat

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Operációs rendszerek 1.

Operációs rendszerek gyakorlat

BASH script programozás II. Vezérlési szerkezetek

Operációs rendszerek. UNIX fájlrendszer

Ismerkedjünk meg a Linuxszal!

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Linux bevezető (jegyzet)

UNIX: folyamatok kommunikációja

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

1/9. Sunell IP kamerák webes felületének használati útmutatója. Élő kép (Live Video)

Operációs rendszerek I. IIII. gyakorlat

LINUX LDAP címtár. Mi a címtár?

M-Fájlok létrehozása MATLAB-ban

LINUX PMB LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

Linux + XFS HOGYAN. Szteroiddal fűtött Linux. Russel Ingram. ringram@gargoylecc.com

Unix-Linux alapok I. gyakorlatvezető: Lutár Patrícia

Pénzügyi algoritmusok

Videosquare regisztráció - Használati tájékoztató

Programzás I gyakorlat

IPTABLES. Forrás: Gregor N. Purdy: Linux iptables zsebkönyv

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

A L I N U X f e l é p í t é s e

Operációs Rendszerek II. labor alkalom

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

A Linux operációs rendszer 2017.

Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira

Operációs Rendszerek II. labor. 2. alkalom

Magyar Gyors felhasználói útmutató A GW-7100PCI driver telepítése Windows 98, ME, 2000 és XP operációs rendszerek alatt

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Egy egyszerű, gyors és szabad újratelepítő eszköz: upi

Elemi alkalmazások fejlesztése I.

Operációs rendszerek 1.

A szerzõrõl... xi Bevezetés... xiii

UNIX: fájlrendszerek

Utolsó módosítás:

A TURBO DEBUGGER HASZNÁLATA

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

Viczián István IP Systems JUM XIX szeptember 18.

Opensuse automatikus telepítése

Tájékoztató. Használható segédeszköz: -

Operációs rendszerek gyakorlat

Verziókezelt konfigurációmanagement++ Pásztor György, SZTE Klebelsberg Könyvtár

Legfontosabb tulajdonságai. UNIX rendszer felhasználói és fejlesztői felülete (1-4. ea.) Unix hagymahéj struktúrája. Legfontosabb tulajdonságai

OPERÁCIÓS RENDSZEREK II GYAKORLAT

KIRA. KIRA rendszer. Telepítési útmutató v1

NIIF Központi Elosztott Szolgáltatói Platform

Operációs rendszerek gyakorlat

BarAck.Net. Internetes csomagkezel. Felhasználói kézikönyv V 1.0. (2011. július 20.)

"Eseményekre imm/connection Server scriptek futtatása

1. Üres merevlemez gépbe helyezése, Boot a CD1 telepíto lemezrol (Hiba esetén video állítása VGA módra F4 billentyüvel, )

Alternatív processz állapot és statisztika lekérdezési módszer a Linux kernelben

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

Írásjogtól Rootig AIX-on

Az Intel gyorsindító készlete a Linux*-hoz v1.2 Gyorstájékoztató. Megrendelési szám: C

Munka állományokkal. mv: áthelyezés (átnevezés) rmdir: üres könyvtár törlése rm: törlés. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

A Java EE 5 plattform

IP-címhez kötött webszolgáltatások használata idegen IP-című gépről

Operációs rendszerek gyakorlat

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

SQUID. Forrás:

Informatika szintmérő-érettségi tételek február

Netfilter. Csomagszűrés. Összeállította: Sallai András

2015/10/08 16:00 1/12 ArchLinux

Operációs rendszerek 2 1. óra: Linux alapok Ismétlés. Windisch Gergely félév

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

1. Bevezető. 2. Sérülékenységek

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Robot Operating System

A L i n u x r u h á j a

Szathmáry László Debreceni Egyetem Informatikai Kar

1_Linux_bevezeto_bash

UNIX fájlrendszerek alapismeretei

XCZ állományok ellenőrzése, átadása elektronikus beküldésre és közvetlen beküldése parancssori funkcióval az ÁNYK programban

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

LINUX PMB VIRTUALBOX TÖRTÉNELEM DEBIAN ALAPPARANCSOK - GRUB

Szerver-üzemeltetés - Tudásközpont, Pécs

Optimalizáció ESX-től View-ig. Pintér Kornél ügyfélszolgála3 mérnök

Hálózati adminisztráció Linux (Ubuntu 8.04) 7. gyakorlat

Podoski Péter és Zabb László

1. tétel. A kommunikáció információelméleti modellje. Analóg és digitális mennyiségek. Az információ fogalma, egységei. Informatika érettségi (diák)

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

iseries Client Access Express - Mielőtt elkezdi

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Technikai információk fejlesztőknek

A Valknut fájlcserélő használata

Programozás I. gyakorlat

Moodle -egy ingyenes, sokoldalú LMS rendszer használata a felsőoktatásban

BASH SCRIPT SHELL JEGYZETEK

IT hálózat biztonság. A WiFi hálózatok biztonsága

Kommunikációs rendszerek teljesítőképesség-vizsgálata

Új generációs informatikai és kommunikációs megoldások ANMS. távközlési hálózatok informatikai hálózatok kutatás és fejlesztés gazdaságos üzemeltetés

Átírás:

Hibakeresés és elhárítás Linux rendszeren Mátó Péter <atya@fsf.hu>

A hibák alaptípusai Előre várt hibák A program képes kezelni a hibát A program nem képes kezelni Váratlan hibák A programozók nem számítottak rá Ha a program megpróbálja orvosolni a hibát, az általában rosszabb, mintha a felhasználóra bízná a javítást Helyesebb, ha a program fail-safe módon működik

A hibák megjelenése Fontos megjegyezni: a programok általában valamilyen módon közlik a hibát, csak néha ez nem egyértelmű. A hibajelzések típusai: Érthető hibaüzenet valamilyen csatornán Urdu nyelvű, de érthető hibaüzenet Egyértelmű, a hibára utaló bináris vagy számkód A hibát jellemző rendellenes működéssel jelzi A hibaüzenet nem érthető: ed: -e kifejezés #1, karakter 43: Hibás hivatkozás (\1) a(z) `s' parancs RHS-ére

A programok kommunikációs felülete Dokumentáció, levelezési listák parancssoros és grafikus: STDOUT, STDERR Grafikus, ncurses: tájékoztató ablakok, státuszsor, beépített napló Szerverek: rendszernaplók saját naplóállományok SMTP üzenetek (pl. cron, monitor rendszer) Egyéb jelzések (pl. hang)

Az STDOUT és STDERR kimenetek Parancssoros programok felülete Grafikus programok is használják (terminálból indítva a legegyszerűbb megnézni) Hiba vagy sok kimenet esetén későbbi elemzésre érdemes elmenteni program 2>&1 >~/tmp/program.log A bőbeszédűség általában befolyásolható -v bőbeszédű (verbose) -q csendes (quiet)

A rendszernaplók Az /etc/syslog.conf *.info;mail.none;authpriv.none;cron.none authpriv.* mail.* cron.* *.emerg * local7.* /var/log/messages /var/log/secure -/var/log/maillog /var/log/cron /var/log/boot.log

A naplóbejegyzések Nov 17 23:31:20 fractal slapd[6862]: bdb_initialize: Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Nov 17 23:31:20 fractal slapd[6862]: could not open config file "/etc/openldap/slapd.conf": No such file or directory (2) Nov 17 23:31:20 fractal slapd[6862]: slapd shutdown: freeing system resources. Nov 17 23:31:20 fractal slapd[6862]: slapd stopped. Nov 17 23:31:20 fractal slapd[6862]: connections_destroy: nothing to destroy.

Naplózási szint A szint közvetlen beállítása (pl. sshd) QUIET FATAL ERROR INFO VERBOSE DEBUG A naplózás maszkolása (pl. OpenLDAP) 256 + 512 = 768-1 enable all debugging 0 no debugging 1 trace function calls 2 debug packet handling 4 heavy trace debugging 8 connection management... 256 stats log connections/operations/results 512 stats log entries sent...

Különös hibajelenségek A program elkezd nagyon sok memóriát fogyasztani A program érthetetlenül sok processzoridőt használ fel A program reprodukálhatóan egy bizonyos helyen leáll/elesik A program nem várt módon reagál Valamilyen sajátos, egyedi dolgot ír ki

Az strace nyomkövető A rendszerhívások követését teszi lehetővé -o fájl a kimenetet fájlba menti -f a gyerekek követésére -ff a gyereket fájl.pid formátumban -F a vfork hívást is követi -p pid a megadott processzt követi -s n a sztringek megadott részét írja ki (def: 32) -e filter szűrési feltétel (pl. trace=open v. -eopen v. trace=open,close,read,write v. trace=file network, ipc, signal...)

Az ltrace nyomkövető A könyvtári függvényhívások követését teszi lehetővé -o fájl a kimenetet fájlba menti -f a gyerekek követésére -p pid a megadott processzt követi -s n a sztringek megadott részét írja ki (def: 32) -e filter szűrési feltétel (pl. printf) -l lib a megadott könyvtár függvényeit írja ki

Egy egyszerű, hibás program #include<sys/stat.h> #include<fcntl.h> int main() { int fd; } mkdir("fa", 0755); chdir("fa"); fd = open ("alma", O_WRONLY O_CREAT O_NONBLOCK O_NOCTTY, S_IRUSR S_IWUSR S_IRGRP S_IWGRP S_IROTH S_IWOTH); write(fd, "alma\n", 5); close(fd); return 0;

Az első hibajelenség Az ellenőrzés hiánya:... mkdir("fa", 0755) chdir("fa") = 0... = -1 EEXIST (File exists)

A második hibajelenség Jogosultsági probléma I.... mkdir("fa", 0755) = -1 EEXIST (File exists) chdir("fa") = -1 EACCES (Permission denied) open("alma", O_WRONLY O_NONBLOCK O_CREAT O_NOCTTY, 0666) = 3 write(3, "alma\n", 5) = 5 close(3) = 0...

A harmadik hibajelenség Jogosultsági probléma II.... mkdir("fa", 0755) = -1 EACCES (Permission denied) chdir("fa") = -1 ENOENT (No such file or directory) open("alma", O_WRONLY O_NONBLOCK O_CREAT O_NOCTTY, 0666) = -1 EACCES (Permission denied) close(-1) = -1 EBADF (Bad file descriptor) exit_group(0) =?

A negyedik hibajelenség umask probléma... mkdir("fa", 0755) = 0 chdir("fa") = 0 open("alma", O_WRONLY O_NONBLOCK O_CREAT O_NOCTTY, 0666) = -1 EACCES (Permission denied) write(-1, "alma\n", 5) = -1 EBADF (Bad file descriptor) close(-1) = -1 EBADF (Bad file descriptor) exit_group(0) =?

Idegen programok futtatása $./knetfilter./knetfilter: error while loading shared libraries: libkio.so.4: cannot open shared object file: No such file or directory A probléma: nincs meg a rendszeren a megadott függvénykönyvtár A probléma felderítése Az ldd használata A strace -eopen használata

Idegen programok futtatása ldd libkio.so.4 => not found libkdesu.so.4 => not found libdl.so.2 => /lib/libdl.so.2 (0x00c4b000)... strace -eopen open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/tls/i686/libkio.so.4", O_RDONLY) = -1 ENOENT (No such file or directory) open("/lib/tls/libkio.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)...

Néhány hasznos apróság A program által használt állományok megkeresése $ touch /tmp/most $ program $ find / -newer /tmp/most A program által használ állományok, vagy a használt állományok programjának keresése $ lsof -p 1748 $ lsof -i :137 $ lsof /path/file

Shell programok hibakeresése sh -x : minden végrehajtott parancsot kiír, így könnyebb követni, hogy hol lehet a hiba sh -u : a nem inicializált változókra figyelmeztet, ezzel sok hiba elkerülhető Egy gyakori gond: a program nem a várt környezetben fut (pl. cron) Nincsenek meg a szükséges környezeti változók Nem a megfelelő könyvtárban van Nem a megfelelő felhasználó nevében fut

Vas vagy driver problémák Hasznos segédeszközök dmesg - a rendszermag üzeneteinek megtekintésére (néha csak a /var/log/boot.log segíthet) lspci - a PCI kártyák megnézésére Memória hibáknál hosszas memtest futtatás Diszk hibák a logból láthatók Ha kell, meg kell hajtani a diszket: # dd if=/dev/hda of=/dev/null bs=1024k count=81920 fsck, mke2fs -c, badblocks

boot gondok A régi kernelt mindig elérhetően kell hagyni Szükség esetén boot tetszőleges Linux CD- ről (Knoppix, Gentoo Live...) hasznos opció: root=/dev/rootdev boot után fel kell csatolni a gép diszkjeit, és javítani a problémát (jól használható a chroot parancs) Lilo gondok Általában a boot loader nem ott van, ahol a lilo futtatása idején (LI), lásd részletesen a Lilo kézikönyvben.

Teljesítmény gondok Eszközök a problémák megoldására Pocesszor: top, sar Memória: free, sar -r, top, vmstat, cat /proc/meminfo Diszk: sar -d, df -h, du -h Hálózat: iptraf, tcpsray

Egyéb hibák Nem indul el vagy feleslegesen indul el egy szolgáltatás rc scriptek (Debian: update-rc.d, Gentoo: rc-update stb.) Nem megfelelő indítási sorrend Az indító scriptek kézi indítása Konfigurációs állományok ellenőrzése A korábban látott debug technikák használata

Elfelejtettük a root jelszavát Valahogy hozzáférünk a rendszerhez: boot közben: linux init=/bin/bash Boot egy Live CD-ről Ezek után mount /dev/rootdev /mnt vagy mount -o remount,rw / vi /mnt/etc/shadow umount /mnt vagy mount -o remount,ro / reboot

Köszönöm a figyelmet

Hibakeresés és elhárítás Linux rendszeren Mátó Péter <atya@fsf.hu>