Rendszerfelügyeleti segédprogramokRendszerfelügyeleti segédprogramok

Tartalomjegyzék

14.1. Hibakeresés
14.2. Fájlok és fájlrendszerek
14.3. Hardverinformáció
14.4. Hálózatok
14.5. A /proc fájlrendszer
14.6. Folyamatok
14.7. Rendszeradatok
14.8. Felhasználó adatai
14.9. Idő és dátum

Kivonat

A rendszer állapotának vizsgálatára számos program és mechanizmus használható; ezek közül mutatunk be néhányat az alábbiakban. Leírunk néhány gyakori, a rutinfeladatok elvégzése során használt segédprogramot is a legfontosabb paraméterekkel együtt.

Minden bemutatott parancsnál megtalálhatók a vonatkozó kimenetek példái is. Ezekben a példákban az első sor maga a parancs (a > vagy # karakterrel jelzett prompt után). A megjegyzéseket szögletes zárójel ([...]) jelöli, és ha szükséges, a hosszú sorokat megtörtük. A hosszú sorok sortöréseit visszafelé dőlt törtvonal (\) jelzi.

# command -x -y
output line 1
output line 2
output line 3 is annoyingly long, so long that \
    we have to break it
output line 3
[...]
output line 98
output line 99

A leírásokat rövidre szabtuk, hogy annyi segédprogramról eshessen szó, amennyiről csak lehetséges. A parancsokról további információ a kézikönyvoldalakon (man) olvasható. A legtöbb parancs kiadható a --help paraméterrel is; ennek hatására kiírja a használható paraméterek rövid listáját.

HibakeresésHibakeresés

A kívánt könyvtár megadása: lddA kívánt könyvtár megadása: ldd

Az ldd parancs annak megkeresésére használható, hogy milyen dinamikus könyvtárakat tölt be az argumentumként megadott végrehajtható fájl.

tux@mercury:~> ldd /bin/ls
        linux-gate.so.1 =>  (0xffffe000)
        librt.so.1 => /lib/librt.so.1 (0xb7f97000)
        libacl.so.1 => /lib/libacl.so.1 (0xb7f91000)
        libc.so.6 => /lib/libc.so.6 (0xb7e79000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7e67000)
        /lib/ld-linux.so.2 (0xb7fb6000)
        libattr.so.1 => /lib/libattr.so.1 (0xb7e63000)

A statikus bináris állományoknak egyetlen dinamikus könyvtárra sincs szükségük.

tux@mercury:~> ldd /bin/sash
        not a dynamic executable
tux@mercury:~> file /bin/sash
/bin/sash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.4, statically linked, for GNU/Linux 2.6.4, stripped

Egy programfuttatás könyvtárhívásai: ltraceEgy programfuttatás könyvtárhívásai: ltrace

Az ltrace parancs lehetővé teszi egy folyamat könyvtárhívásainak követését. A parancs hasonló módon használható, mint az strace. A -c paraméter kijelzi a könyvtárhívások számát és időtartamát.

tux@mercury:~> ltrace -c find ~
% time     seconds  usecs/call     calls      function
------ ----------- ----------- --------- --------------------
 34.37    6.758937         245     27554 __errno_location
 33.53    6.593562         788      8358 __fprintf_chk
 12.67    2.490392         144     17212 strlen
 11.97    2.353302         239      9845 readdir64
  2.37    0.466754          27     16716 __ctype_get_mb_cur_max
  1.17    0.230765          27      8358 memcpy
[...]
  0.00    0.000036          36         1 textdomain
------ ----------- ----------- --------- --------------------
100.00   19.662715                105717 total

Egy programfuttatás rendszerhívásai: straceEgy programfuttatás rendszerhívásai: strace

Az strace segédprogram segít egy futó program összes rendszerhívásának nyomon követésében. Adjon meg egy parancsot a szokásos módon, de az elejére írja oda, hogy strace:

tux@mercury:~> strace ls
execve("/bin/ls", ["ls"], [/* 61 vars */]) = 0
uname({sys="Linux", node="mercury", ...}) = 0
brk(0)                                  = 0x805c000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or \
    directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=89696, ...}) = 0
mmap2(NULL, 89696, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ef2000
close(3)                                = 0
open("/lib/librt.so.1", O_RDONLY)       = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\36\0"..., 512) \
   = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=36659, ...}) = 0
[...]
stat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) \
    = 0xb7ca7000
write(1, "bin  Desktop  Documents  music\tM"..., 55bin  Desktop  Documents \
   \  music       Music  public_html  tmp
) = 55
close(1)                                = 0
munmap(0xb7ca7000, 4096)                = 0
exit_group(0)                           = ?

Egy adott fájl megnyitására történt kísérletek nyomon követéséhez például írja be a következőt:

tux@mercury:~> strace -e open ls .bashrc
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/librt.so.1", O_RDONLY)       = 3
open("/lib/libacl.so.1", O_RDONLY)      = 3
open("/lib/libc.so.6", O_RDONLY)        = 3
open("/lib/libpthread.so.0", O_RDONLY)  = 3
open("/lib/libattr.so.1", O_RDONLY)     = 3
[...]

Az összes leszármazott folyamat nyomon követéséhez használja a -f paramétert. Az strace viselkedése és kimeneti formátumai nagymértékben szabályozhatók. További információ: man strace.