13. fejezet - Rendszerfelügyeleti segédprogramok

Tartalomjegyzék

13.1. Többcélú eszközök
13.2. Rendszeradatok
13.3. Folyamatok
13.4. Memória
13.5. Hálózatok
13.6. A /proc fájlrendszer
13.7. Hardverinformáció
13.8. Fájlok és fájlrendszerek
13.9. Felhasználó adatai
13.10. Idő és dátum
13.11. Adatok megjelenítése grafikonon: RRDtool

Kivonat

Számos program áll rendelkezésre a rendszer állapotának vizsgálatához. Ebben a fejezetben ezek közül néhány kerül bemutatásra, a legfontosabb és leggyakrabban használt paraméterekkel.

Minden bemutatott parancsnál megtalálhatók a vonatkozó kimenetek példái is. 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ások rövidek, hogy minél több segédprogram bemutatásra tudjon kerülni. 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.

13.1. Többcélú eszközök

A legtöbb linuxos rendszerfelügyeleti eszköz csak a rendszer egy megadott részét vizsgálja, azonban létezik néhány svájci-bicska jellegű segédprogram, amely a rendszer valamilyen szempontjából átfogó képet nyújt. Érdemes elsősorban ezeket az eszközöket használni, ahhoz, hogy átfogó képet kapjunk a rendszerről és hogy megmutassák, hogy melyik részek további vizsgálata szükséges.

13.1.1. vmstat

A vmstat információt gyűjt a folyamatokkal, memóriával, I/O-val, megszakításokkal és a processzorral kapcsolatban. Ha mintavételezési gyakoriság megadása nélkül kerül meghívásra, akkor az utolsó újraindítás óta eltelt időszak átlagértékeit mutatja. Ha meghívásakor a mintavételezési gyakoriság is megadásra kerül, akkor az aktuális mintavételeket mutatja:

13.1. példa - vmstat kimenete alacsony kihasználtságú számítógépen


tux@mercury:~> vmstat -a 2
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu-------
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy  id wa st
 0  0      0 750992 570648 548848    0    0     0     1    8    9  0  0 100  0  0
 0  0      0 750984 570648 548912    0    0     0     0   63   48  1  0 99   0  0
 0  0      0 751000 570648 548912    0    0     0     0   55   47  0  0 100  0  0
 0  0      0 751000 570648 548912    0    0     0     0   56   50  0  0 100  0  0
 0  0      0 751016 570648 548944    0    0     0     0   57   50  0  0 100  0  0

13.2. példa - vmstat kimenete magas kihasználtságú számítógépen


tux@mercury:~> vmstat 2
procs -----------memory----------- ---swap-- -----io---- -system-- -----cpu------
 r  b   swpd   free   buff   cache   si   so    bi    bo   in   cs us sy id wa st
32  1  26236 459640 110240 6312648    0    0  9944     2 4552 6597 95  5  0  0  0
23  1  26236 396728 110336 6136224    0    0  9588     0 4468 6273 94  6  0  0  0
35  0  26236 554920 110508 6166508    0    0  7684 27992 4474 4700 95  5  0  0  0
28  0  26236 518184 110516 6039996    0    0 10830     4 4446 4670 94  6  0  0  0
21  5  26236 716468 110684 6074872    0    0  8734 20534 4512 4061 96  4  0  0  0

[Tip]

A vmstat kimenetének első sora mindig az utolsó újraindítás óta eltelt időszak átlagértékeit mutatja.

Az oszlopok a következőket jelentik:

r

Folyamatok száma a futási sorban Ezek a folyamatok arra várnak, hogy szabad időt kapjanak a processzortól. Amennyiben a folyamatok száma ebben az oszlopban folyamatosan magasabb, mint a rendelkezésre álló processzorok száma, akkor az azt jelzi, hogy a számítógép processzorkapacitása alacsony.

b

Folyamatok száma, amely nem a processzor erőforrására vár. Amennyiben a folyamatok száma magas ebben az oszlopban, akkor az I/O problémára utal (hálózat vagy lemez).

swpd

A jelenleg felhasznált csereterület (swap).

free

Fel nem használt memória mennyisége.

inact

Jelenleg fel nem használt, lefoglalható memória. Ez az oszlop csak akkor jelenik meg, ha a vmstat a -a paraméterrel kerül meghívásra (javasolt).

active

Jelenleg használt memória, amely normális esetben nem foglalható le. Ez az oszlop csak akkor jelenik meg, ha a vmstat a -a paraméterrel kerül meghívásra (javasolt).

buff

Fájlpuffer gyorsítótár a RAM-ban. Ez az oszlop nem jelenik meg, ha a vmstat a -a paraméterrel kerül meghívásra (javasolt).

cache

Page gyorsítótár a RAM-ban. Ez az oszlop nem jelenik meg, ha a vmstat a -a paraméterrel kerül meghívásra (javasolt).

si

Másodpercenként a RAM-ból a csereterületre (swap) mozgatott adatmennyiség. Amennyiben ez az oszlop hosszabb ideig nagy adatmennyiséget mutat, akkor a számítógépnek több memóriára van szüksége.

so

Másodpercenként a a csereterületről (swap) a RAM-ba mozgatott adatmennyiség. Amennyiben ez az oszlop hosszabb ideig nagy adatmennyiséget mutat, akkor a számítógépnek több memóriára van szüksége.

bi

A blokkeszközről másodpercenként érkező blokkok száma (pl. lemezolvasás). A csereterület gyakori használata kihatással lehet az itt látható értékekre.

bo

A blokkeszközre másodpercenként érkező blokkok száma (pl. lemezírás). A csereterület gyakori használata kihatással lehet az itt látható értékekre.

in

Másodpercenkénti megszakítások száma. Ennek magas száma nagy I/O aktivitásra utal (hálózat és/vagy lemez).

cs

Másodpercenkénti kontextusváltás. Leegyszerűsítve ez azt jelenti, hogy a kernelnek a memóriában az egyik futtatható kódot egy másikra kellett cserélnie.

us

Felhasználófolyamatok általi processzorhasználat százalékban.

sy

Rendszerfolyamatok általi processzorhasználat százalékban.

id

A processzor tétlenül töltött ideje százalékban. Amennyiben ez az érték hosszabb ideig nulla, akkor a processzor(ok) teljes kapacitással dolgoznak. Ez nem feltétlenül jelent rosszat – érdemes inkább az r és b oszlopokat megnézni az elegendő processzorteljesítmény vizsgálatához.

wa

I/O várakozással töltött idő. Amennyiben ez az érték nullánál jóval magasabb, akkor az I/O rendszerben szűk keresztmetszet található (hálózat vagy lemez).

st

Virtuális gépek processzorhasználata százalékban.

További paraméterek a vmstat --help parancs használatával tekinthetők meg.

13.1.2. Rendszeraktivitás: sar és sadc

A sar részletes jelentéseket képes generálni a rendszer szinte minden fontos tevékenységéről, így például a CPU-ról, a memóriáról, az IRQ-k használatáról, az I/O-ról és a hálózatokról. Ennek segítségével azonnali jelentések is készíthetők, vagy előre elkészített lekérdezések is használhatók az sadc által gyűjtött adatokból. A sar és a sadc az adatokat a /proc könyvtárból gyűjti.

[Note]sysstat csomag

A sar és a sadc a sysstat csomag részei. A csomag a YaST segítségével, vagy zypper install sysstat parancs használatával telepíthető.

13.1.2.1. Napi statisztikák automatikus gyűjtése sadc használatával

Amennyiben hosszabb ideig van szükség a rendszer monitorozására, akkor az automatikus adatgyűjtéshez az sadc programot érdemes használni. A gyűjtött adat a sar használatával bármikor beolvasható. A sadc elindításához az /etc/init.d/boot.sysstat start parancsot kell futtatni. Ez egy hivatkozást ad hozzá az /etc/cron.d/ könyvtár alatt, amely a sadc programot hívja meg az alábbi alapértelmezett beállításokkal:

  • Minden elérhető adat összegyűjtésre kerül.

  • Az adat a következő helyre kerül kiírásra: /var/log/sa/saDD, ahol a DD az adott napot jelöli. Amennyiben a fájl már létezik, akkor az archiválásra kerül.

  • Az összefoglaló jelentés a /var/log/sa/sarDD fájlba kerül, ahol a DD az adott napot jelenti. A létező fájlok archiválásra kerülnek.

  • Az adatgyűjtés 10 percenként történik és az összesítő jelentés 6 óránként készül el (lásd /etc/sysstat/sysstat.cron).

  • Az adatgyűjtést a /usr/lib64/sa/sa1 parancsfájl végzi (vagy 32 bites rendszereken a /usr/lib/sa/sa1)

  • Az összefoglaló jelentést a /usr/lib64/sa/sa2 (vagy 32 bites rendszerek a /usr/lib/sa/sa2) parancsfájl végzi.

A beállítások módosításához célszerű lemásolni a sa1 és az sa2 parancsfájlokat és azokat módosítani. Módosítsa az /etc/cron.d/sysstat hivatkozást az /etc/sysstat/sysstat.cron módosított másolatával, hogy az új parancsfájlt hívja meg.

13.1.2.2. Jelentés készítése sar használatával

Azonnali jelentés készítéséhez indítsa el a sar programot időintervallum és darabszám megadásával. Fájlokból történő jelentések készítéséhez, a fájl megadásához használja a -f kapcsolót. Amennyiben a fájlnév, az időintervallum és a darabszám sem kerül megadásra, akkor a sar a jelentést a /var/log/sa/saDD, fájlból készíti el, ahol DD az aktuális napot jelöli. Ez az alapértelmezett elérési útvonal, ahová a sadc lementi az adatokat. Több fájl, több -f kapcsolóval kérdezhető le.

sar 2 10                         # on-the-fly report, 10 times every 2 seconds
sar -f ~/reports/sar_2010_05_03  # queries file sar_2010_05_03
sar                              # queries file from today in /var/log/sa/
cd /var/log/sa &&\
sar -f sa01 -f sa02              # queries files /var/log/sa/0[12]

Az alábbiakban néhány hasznos példa található a sar hivásainak használatára: Az oszlopok jelentésének részletes leírása a sar man (1) man oldalain található. A man oldalakon további beállításokról és jelentésekről kaphat részletes információt – a sar számos további funkcióval rendelkezik.

13.1.2.2.1. Processzor kihasználtsági jelentés: sar

Paraméterek nélkül elindítva a sar egyszerű jelentést készít a processzor használatáról. Több processzorral rendelkező számítógépeken az összes processzor eredményei összegződnek. A -P ALL kapcsoló használatával a statisztika processzoronként külön szerepel.

mercury:~ # sar 10 5
Linux 2.6.31.12-0.2-default (mercury) 03/05/10   _x86_64_   (2 CPU)

14:15:43   CPU    %user   %nice   %system   %iowait    %steal     %idle
14:15:53   all    38.55    0.00      6.10      0.10      0.00     55.25
14:16:03   all    12.59    0.00      4.90      0.33      0.00     82.18
14:16:13   all    56.59    0.00      8.16      0.44      0.00     34.81
14:16:23   all    58.45    0.00      3.00      0.00      0.00     38.55
14:16:33   all    86.46    0.00      4.70      0.00      0.00      8.85
Average:   all    49.94    0.00      5.38      0.18      0.00     44.50

Amennyiben a %iowait (a processzor I/O műveletre történő várakozásának ideje százalékban) értéke hosszabb ideig jóval magasabb, mint nulla, akkor az I/O rendszerben szűk keresztmetszet található (hálózat vagy a lemez). Amennyiben az %idle értéke hosszabb ideig nulla, akkor a processzor teljes kapacitással működik.

13.1.2.2.2. Memóriafelhasználási jelentés: sar -r

A sar átfogó képet nyújt a rendszermemóriáról (RAM) a -r kapcsoló segítségével:


mercury:~ # sar -r 10 5
Linux 2.6.31.12-0.2-default (mercury) 03/05/10   _x86_64_   (2 CPU)

16:12:12 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
16:12:22    548188   1507488    73.33     20524    64204  2338284   65.10
16:12:32    259320   1796356    87.39     20808    72660  2229080   62.06
16:12:42    381096   1674580    81.46     21084    75460  2328192   64.82
16:12:52    642668   1413008    68.74     21392    81212  1938820   53.98
16:13:02    311984   1743692    84.82     21712    84040  2212024   61.58
Average:    428651   1627025    79.15     21104    75515  2209280   61.51

Az utolsó két oszlop (kbcommit és %commit) megmutatja a teljes memória (RAM és a csereterület) méretét, amelyre a legrosszabb esetben szükség van a jelenlegi terhelés mellett (kilobyte-ban, illetve százalékban megadva).

13.1.2.2.3. Paging statisztikai jelentés: sar -B

A kernel paging statisztika megjelenítéséhez a -B kapcsolót kell használni.


mercury:~ # sar -B 10 5 
Linux 2.6.31.12-0.2-default (mercury) 03/05/10   _x86_64_   (2 CPU)

16:11:43 pgpgin/s pgpgout/s   fault/s majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s  %vmeff
16:11:53   225.20    104.00  91993.90     0.00  87572.60      0.00      0.00      0.00    0.00
16:12:03   718.32    601.00  82612.01     2.20  99785.69    560.56    839.24   1132.23   80.89
16:12:13  1222.00   1672.40 103126.00     1.70 106529.00   1136.00    982.40   1172.20   55.33
16:12:23   112.18     77.84 113406.59     0.10  97581.24     35.13    127.74    159.38   97.86
16:12:33   817.22     81.28 121312.91     9.41 111442.44      0.00      0.00      0.00    0.00
Average:   618.72    507.20 102494.86     2.68 100578.98    346.24    389.76    492.60   66.93

A majflt/s (major faults per second) oszlop azt mutatja, hogy mennyi memórialap került betöltésre a lemezről (swap) a memóriába. Ennek nagy száma azt jelenti, hogy nincs elegendő memória a számítógépben. A %vmeff oszlop a vizsgált lapok számát mutatja (pgscand/s), összehasonlítva a memória gyorsítótárában, vagy a swap gyorsítótárban újrahasznált lapokkal (pgsteal/s). Ez mutatja a memórialapok felhasználásának hatékonyságát. Egészségesnek tekinthető a 100 körüli érték (minden inaktív memóriaoldal újra felhasználásra kerül) vagy a 0 (amikor nincs vizsgált oldal). Ennek az értéknek nem szabad 30 alá esnie.

13.1.2.2.4. Blokkeszköz statisztikai jelentés: sar -d

A -d kapcsoló használatával megjelennek a blokkeszközök (hdd, optikai meghajtók, USB tároló eszközök stb.). Érdemes használni a -p kapcsolót, amely olvasható formátumban jeleníti meg a DEV oszlopot.


mercury:~ # sar -d -p 10 5
Linux 2.6.31.12-0.2-default (neo) 	03/05/10 	_x86_64_	(2 CPU)

16:28:31  DEV    tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
16:28:41  sdc  11.51     98.50    653.45     65.32      0.10   8.83   4.87   5.61
16:28:41 scd0   0.00      0.00      0.00      0.00      0.00   0.00   0.00   0.00

16:28:41  DEV    tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
16:28:51  sdc  15.38    329.27    465.93     51.69      0.10   6.39   4.70   7.23
16:28:51 scd0   0.00      0.00      0.00      0.00      0.00   0.00   0.00   0.00

16:28:51  DEV    tps rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
16:29:01  sdc  32.47   876.72    647.35     46.94      0.33  10.20   3.67  11.91
16:29:01 scd0   0.00     0.00      0.00      0.00      0.00   0.00   0.00   0.00

16:29:01  DEV    tps rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
16:29:11  sdc  48.75  2852.45    366.77     66.04      0.82  16.93   4.91  23.94
16:29:11 scd0   0.00     0.00      0.00      0.00      0.00   0.00   0.00   0.00

16:29:11  DEV    tps rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
16:29:21  sdc  13.20   362.40    412.00     58.67      0.16  12.03   6.09   8.04
16:29:21 scd0   0.00     0.00      0.00      0.00      0.00   0.00   0.00   0.00

Average:  DEV    tps rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
Average:  sdc  24.26   903.52    509.12     58.23      0.30  12.49   4.68  11.34
Average: scd0   0.00     0.00      0.00      0.00      0.00   0.00   0.00   0.00

A legjobb teljesítmény akkor érhető el, ha a számítógépben több merevlemez található és az I/O kérések egyenlően oszlanak el a merevlemezek között. Érdemes összehasonlítani az összes merevlemez tps, rd_sec/s és wr_sec/s paraméterének Average (átlag) értékeit. Az svctm és %util oszlopok folyamatosan magas értékei azt mutatják, hogy a merevlemezen található szabad terület száma alacsony.

13.1.2.2.5. Hálózati statisztika: sar -n KULCSSZÓ

Az -n kapcsoló többféle hálózati statisztikát jelenít meg. Az -n kapcsolóhoz az alábbi kulcsszavak adhatók meg:

  • DEV: Statisztikát készít az összes hálózati eszközről

  • EDEV: Statisztikát készít a hálózati eszközök hibáiról.

  • NFS: Statisztikát készít az NFS-kliensről.

  • NFSD: Statisztikát készít az NFS-kiszolgálóról.

  • SOCK: Statisztikát készít a socketekről

  • ALL: Elkészíti az összes statisztikát

13.1.2.3. sar adatok megjelenítése

A sar által készített statisztikák és jelentések általában nem áttekinthetők. A kSar, egy Java alkalmazás, amely segít a sar adatok megjelenítésében, és áttekinthető grafikonokat készít. Emellett lehetőség van a statisztikák exportálására PDF formátumban is. A kSar képes folyamatosan képes feldolgozni az adatokat, valamint lehetőség van korábbi adatok feldolgozására is. A kSar BSD licenc alatt jelenik meg és a http://ksar.atomique.net/ weboldalon érhető el.

13.2. Rendszeradatok

13.2.1. Eszközterhelési adatok: iostat

Az iostat a rendszereszközök terhelését figyeli. Az általa készített jelentések hasznosak lehetnek a számítógéphez csatlakoztatott lemezek jobb terheléselosztásának kialakítására.

Az első iostat jelentés a rendszerindítás óta gyűjtött adatokat jeleníti meg. Az ezt követő jelentések az előző jelentés óta eltelt időt ölelik fel.

tux@mercury:~> iostat
Linux 2.6.32.7-0.2-default (geeko@buildhost) 	02/24/10 	_x86_64_

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,49    0,01    0,10    0,31    0,00   99,09

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               1,34         5,59        25,37    1459766    6629160
sda1              0,00         0,01         0,00       1519          0
sda2              0,87         5,11        17,83    1335365    4658152
sda3              0,47         0,47         7,54     122578    1971008

Az -n kapcsoló használatával az iostat a hálózati fájlrendszerek (NFS) terhelési adatait is hozzáadja a statisztikához. Az -x kapcsoló részletes statisztikai adatokat jelenít meg.

Az is meghatározható, hogy mely eszközöket, milyen időközönként kell figyelni. Például az iostat -p sda 3 5 parancs 5 jelentést készít, 3 másodpercenként az sda eszközről.

[Note]sysstat csomag

Az iostat a sysstat csomag része. A csomag a YaST segítségével, vagy zypper install sysstat parancs használatával telepíthető.

13.2.2. Processzor aktivitás figyelő: mpstat

Az mpstat segédprogram minden egyes elérhető processzor aktivitását nyomon követi. Amennyiben a számítógépben csak egyetlen processzor van, akkor az általános statisztikák készülnek csak el.

A -P kapcsolóval megadható a processzorok száma, amelyek adatai a jelentésbe kerüljenek (érdemes megjegyezni, hogy a 0 az első processzor). Az időzítési paraméterek pont ugyanúgy működnek, mint az iostat parancs esetében. Az mpstat -P 1 2 5 parancs 5 jelentést készít, 2 másodpercenként a második (1-es számú) processzorról.

tux@mercury:~> mpstat -P 1 2 5
Linux 2.6.32.7-0.2-default (geeko@buildhost) 	02/24/10 	_x86_64_

08:57:10  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  \
 %guest   %idle
08:57:12    1    4.46    0.00    5.94    0.50    0.00    0.00    0.00  \
 0.00   89.11
08:57:14    1    1.98    0.00    2.97    0.99    0.00    0.99    0.00  \
 0.00   93.07
08:57:16    1    2.50    0.00    3.00    0.00    0.00    1.00    0.00  \
 0.00   93.50
08:57:18    1   14.36    0.00    1.98    0.00    0.00    0.50    0.00  \
 0.00   83.17
08:57:20    1    2.51    0.00    4.02    0.00    0.00    2.01    0.00  \
 0.00   91.46
Average:    1    5.17    0.00    3.58    0.30    0.00    0.90    0.00  \
 0.00   90.05

13.2.3. Feladatfigyelés: pidstat

Ha meg akarja tekinteni, hogy melyik terhelés melyik feladathoz tartozik, akkor a pidstat parancsot kell használni. Ez a parancs kiírja az összes kiválasztott feladat vagy amennyiben nincs megadva feladat, akkor az összes Linux kernelhez kapcsolódó feladat aktivitását. Ugyancsak megadható, hogy milyen időközönként mennyi jelentés készüljön.

Például a pidstat -C top 2 3 kiírja az olyan feladatok terhelési statisztikáit, amelyek nevében szerepel a top. Három jelentés fog készülni két másodperces időközökkel.

tux@mercury:~> pidstat -C top 2 3
Linux 2.6.27.19-5-default (geeko@buildhost) 	03/23/2009 	_x86_64_

09:25:42 AM       PID    %usr %system  %guest    %CPU   CPU  Command
09:25:44 AM     23576   37.62   61.39    0.00   99.01     1  top

09:25:44 AM       PID    %usr %system  %guest    %CPU   CPU  Command
09:25:46 AM     23576   37.00   62.00    0.00   99.00     1  top

09:25:46 AM       PID    %usr %system  %guest    %CPU   CPU  Command
09:25:48 AM     23576   38.00   61.00    0.00   99.00     1  top

Average:          PID    %usr %system  %guest    %CPU   CPU  Command
Average:        23576   37.54   61.46    0.00   99.00     -  top

13.2.4. Kernel gyűrűpuffer: dmesg

A Linux-kernel számos üzenetet tárol egy gyűrűpufferben. Ezen üzenetek megtekintésére szolgál a dmesg parancs:

tux@mercury:~> dmesg
[...]
end_request: I/O error, dev fd0, sector 0
subfs: unsuccessful attempt to mount media (256)
e100: eth0: e100_watchdog: link up, 100Mbps, half-duplex
NET: Registered protocol family 17
IA-32 Microcode Update Driver: v1.14 <tigran@veritas.com>
microcode: CPU0 updated from revision 0xe to 0x2e, date = 08112004
IA-32 Microcode Update Driver v1.14 unregistered
bootsplash: status on console 0 changed to on
NET: Registered protocol family 10
Disabled Privacy Extensions on device c0326ea0(lo)
IPv6 over IPv4 tunneling driver
powernow: This module only works with AMD K7 CPUs
bootsplash: status on console 0 changed to on

A régebbi események a /var/log/messages és /var/log/warn fájlokban vannak naplózva.

13.2.5. Nyitott fájlok listája: lsof

Egy adott folyamatazonosítóval (PID) rendelkező folyamathoz tartozó összes nyitott fájl listájának megtekintéséhez használja a -p paramétert. Ha például látni szeretné az aktuális parancsértelmező által használt összes fájlt, írja be a következőket:

tux@mercury:~> lsof -p $$
COMMAND  PID   USER   FD   TYPE DEVICE  SIZE/OFF NODE NAME
bash    5552 tux  cwd    DIR    3,3    1512 117619 /home/tux
bash    5552 tux  rtd    DIR    3,3     584      2 /
bash    5552 tux  txt    REG    3,3  498816  13047 /bin/bash
bash    5552 tux  mem    REG    0,0              0 [heap] (stat: No such
bash    5552 tux  mem    REG    3,3  217016 115687 /var/run/nscd/passwd
bash    5552 tux  mem    REG    3,3  208464  11867 /usr/lib/locale/en_GB.
[...]
bash    5552 tux  mem    REG    3,3     366   9720 /usr/lib/locale/en_GB.
bash    5552 tux  mem    REG    3,3   97165   8828 /lib/ld-2.3.6.so
bash    5552 tux    0u   CHR  136,5              7 /dev/pts/5
bash    5552 tux    1u   CHR  136,5              7 /dev/pts/5
bash    5552 tux    2u   CHR  136,5              7 /dev/pts/5
bash    5552 tux  255u   CHR  136,5              7 /dev/pts/5

A speciális $$ parancsértelmező-változót használtuk, amelynek az értéke az aktuális parancsértelmező folyamatazonosítója.

Az lsof parancs paraméterek nélkül kiadva minden éppen nyitott fájlt felsorol. Gyakran fájlok ezrei vannak nyitva, ezért mindegyiket ritkán érdemes kilistázni. Az összes fájl listája azonban a keresési funkciókkal kombinálva hasznos listákat eredményez. Ilyen például az összes karakteres eszköz listája:

tux@mercury:~> lsof | grep CHR
bash      3838     tux    0u      CHR  136,0                 2 /dev/pts/0
bash      3838     tux    1u      CHR  136,0                 2 /dev/pts/0
bash      3838     tux    2u      CHR  136,0                 2 /dev/pts/0
bash      3838     tux  255u      CHR  136,0                 2 /dev/pts/0
bash      5552     tux    0u      CHR  136,5                 7 /dev/pts/5
bash      5552     tux    1u      CHR  136,5                 7 /dev/pts/5
bash      5552     tux    2u      CHR  136,5                 7 /dev/pts/5
bash      5552     tux  255u      CHR  136,5                 7 /dev/pts/5
X         5646       root  mem       CHR    1,1              1006 /dev/mem
lsof      5673     tux    0u      CHR  136,5                 7 /dev/pts/5
lsof      5673     tux    2u      CHR  136,5                 7 /dev/pts/5
grep      5674     tux    1u      CHR  136,5                 7 /dev/pts/5
grep      5674     tux    2u      CHR  136,5                 7 /dev/pts/5

Az -i kapcsoló használatával az lsof kilistázza a jelenleg nyitott internetes fájlokat is:

tux@mercury:~> lsof -i
[...]
pidgin     4349 tux   17r  IPv4  15194      0t0  TCP \
 jupiter.example.com:58542->www.example.net:https (ESTABLISHED)
pidgin     4349 tux   21u  IPv4  15583      0t0  TCP \
 jupiter.example.com:37051->aol.example.org:aol (ESTABLISHED)
evolution  4578 tux   38u  IPv4  16102      0t0  TCP \
 jupiter.example.com:57419->imap.example.com:imaps (ESTABLISHED)
npviewer.  9425 tux   40u  IPv4  24769      0t0  TCP \
 jupiter.example.com:51416->www.example.com:http (CLOSE_WAIT)
npviewer.  9425 tux   49u  IPv4  24814      0t0  TCP \
 jupiter.example.com:43964->www.example.org:http (CLOSE_WAIT)
ssh       17394 tux    3u  IPv4  40654      0t0  TCP \
 jupiter.example.com:35454->saturn.example.com:ssh (ESTABLISHED)

13.2.6. Kernel és udev eseménysorozat-megjelenítő: udevadm monitor

Az udevadm monitor a kernel ueventeket és az udev szabályok által kibocsátott eseményeket figyeli és kiírja az eseményben érintett eszköz elérési útját (DEVPATH) a konzolra. Egy USB-pendrive csatlakoztatásával kapcsolatos események sorozata:

[Note]udev események monitorozása

Csak a root felhasználónak van joga az udev események figyelésére az udevadm parancs használatával.

UEVENT[1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2
UEVENT[1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2
UEVENT[1138806687] add@/class/scsi_host/host4
UEVENT[1138806687] add@/class/usb_device/usbdev4.10
UDEV  [1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2
UDEV  [1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2
UDEV  [1138806687] add@/class/scsi_host/host4
UDEV  [1138806687] add@/class/usb_device/usbdev4.10
UEVENT[1138806692] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2
UEVENT[1138806692] add@/block/sdb
UEVENT[1138806692] add@/class/scsi_generic/sg1
UEVENT[1138806692] add@/class/scsi_device/4:0:0:0
UDEV  [1138806693] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2
UDEV  [1138806693] add@/class/scsi_generic/sg1
UDEV  [1138806693] add@/class/scsi_device/4:0:0:0
UDEV  [1138806693] add@/block/sdb
UEVENT[1138806694] add@/block/sdb/sdb1
UDEV  [1138806694] add@/block/sdb/sdb1
UEVENT[1138806694] mount@/block/sdb/sdb1
UEVENT[1138806697] umount@/block/sdb/sdb1

13.2.7. Biztonsági események: audit

A Linux audit keretrendszer egy komplex auditrendszer, amely összegyűjti az összes biztonsággal kapcsolatos esemény részletes adatát. Ezek az információk elemezhetők, hogy felismerjenek például egy biztonsági irányelv megsértést.

13.2.8. X11-kliensek által használt kiszolgáló-erőforrások: xrestop

A xrestop parancs statisztikákat jelenít meg az egyes X11-kliensek kiszolgálóoldali erőforrásairól. A kimenet hasonló ehhez: 13.3.4. - Folyamatok táblázata: top.

xrestop - Display: localhost:0
          Monitoring 40 clients. XErrors: 0
          Pixmaps:   42013K total, Other:     206K total, All:   42219K total

res-base Wins  GCs Fnts Pxms Misc   Pxm mem  Other   Total   PID Identifier
3e00000   385   36    1  751  107    18161K     13K  18175K   ?   NOVELL: SU
4600000   391  122    1 1182  889     4566K     33K   4600K   ?   amaroK - S
1600000    35   11    0   76  142     3811K      4K   3816K   ?   KDE Deskto
3400000    52   31    1   69   74     2816K      4K   2820K   ?   Linux Shel
2c00000    50   25    1   43   50     2374K      3K   2378K   ?   Linux Shel
2e00000    50   10    1   36   42     2341K      3K   2344K   ?   Linux Shel
2600000    37   24    1   34   50     1772K      3K   1775K   ?   Root - Kon
4800000    37   24    1   34   49     1772K      3K   1775K   ?   Root - Kon
2a00000   209   33    1  323  238     1111K     12K   1123K   ?   Trekstor25
1800000   182   32    1  302  285     1039K     12K   1052K   ?   kicker
1400000   157  121    1  231  477      777K     18K    796K   ?   kwin
3c00000   175   36    1  248  168      510K      9K    520K   ?   de.comp.la
3a00000   326   42    1  579  444      486K     20K    506K   ?   [opensuse-
0a00000    85   38    1  317  224      102K      9K    111K   ?   Kopete
4e00000    25   17    1   60   66       63K      3K     66K   ?   YaST Contr
2400000    11   10    0   56   51       53K      1K     55K 22061 suseplugge
0e00000    20   12    1   50   92       50K      3K     54K 22016 kded
3200000     6   41    5   72   84       40K      8K     48K   ?   EMACS
2200000    54    9    1   30   31       42K      3K     45K   ?   SUSEWatche
4400000     2   11    1   30   34       34K      2K     36K 16489 kdesu
1a00000   255    7    0   42   11       19K      6K     26K   ?   KMix
3800000     2   14    1   34   37       21K      2K     24K 22242 knotify
1e00000    10    7    0   42    9       15K    624B     15K   ?   KPowersave
3600000   106    6    1   30    9        7K      3K     11K 22236 konqueror
2000000    10    5    0   21   34        9K      1K     10K   ?   klipper
3000000    21    7    0   11    9        7K    888B      8K   ?   KDE Wallet

13.3. Folyamatok

13.3.1. Folyamatközi kommunikáció: ipcs

Az ipcs parancs megadja az aktuálisan használt IPC-erőforrások listáját:

------ Shared Memory Segments --------
key        shmid      owner     perms      bytes      nattch     status
0x00000000 58261504   tux    600        393216     2          dest
0x00000000 58294273   tux    600        196608     2          dest
0x00000000 83886083   tux    666        43264      2
0x00000000 83951622   tux    666        192000     2
0x00000000 83984391   tux    666        282464     2
0x00000000 84738056   root      644        151552     2          dest

------ Semaphore Arrays --------
key        semid      owner     perms      nsems
0x4d038abf 0          tux    600        8

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

13.3.2. Folyamatlista: ps

A ps parancs folyamatlistát készít. A legtöbb paraméter mínuszjel nélkül is megadható. A ps --help parancs egy rövidített súgóoldalt jelenít meg, a kézikönyvoldalon pedig részletes súgó található.

Az összes folyamat felhasználói és parancssori információkkal történő kiíratásához adja ki a ps aux parancsot:

tux@mercury:~> ps axu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0    696   272 ?        S    12:59   0:01 init [5]
root         2  0.0  0.0      0     0 ?        SN   12:59   0:00 [ksoftirqd
root         3  0.0  0.0      0     0 ?        S<   12:59   0:00 [events
[...]
tux    4047  0.0  6.0 158548 31400 ?        Ssl  13:02   0:06 mono-best
tux    4057  0.0  0.7   9036  3684 ?        Sl   13:02   0:00 /opt/gnome
tux    4067  0.0  0.1   2204   636 ?        S    13:02   0:00 /opt/gnome
tux    4072  0.0  1.0  15996  5160 ?        Ss   13:02   0:00 gnome-scre
tux    4114  0.0  3.7 130988 19172 ?        SLl  13:06   0:04 sound-juic
tux    4818  0.0  0.3   4192  1812 pts/0    Ss   15:59   0:00 -bash
tux    4959  0.0  0.1   2324   816 pts/0    R+   16:17   0:00 ps axu

Annak ellenőrzésére például, hogy hány sshd folyamat fut, használja a -p paramétert a pidof paranccsal, amelyik megjeleníti az adott folyamat folyamatazonosítóját (PID-jét).

tux@mercury:~> ps -p $(pidof sshd)
  PID TTY      STAT   TIME COMMAND
 3524 ?        Ss     0:00 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid
 4813 ?        Ss     0:00 sshd: tux [priv]
 4817 ?        R      0:00 sshd: tux@pts/0

A folyamatlista az igényeknek megfelelően formázható. A -L paraméter visszaadja a kulcsszavak listáját. Adja meg a következő parancsot a folyamatok kiíratásához, memóriahasználat szerint rendezve:

tux@mercury:~> ps ax --format pid,rss,cmd --sort rss
  PID   RSS CMD
    2     0 [ksoftirqd/0]
    3     0 [events/0]
    4     0 [khelper]
    5     0 [kthread]
   11     0 [kblockd/0]
   12     0 [kacpid]
  472     0 [pdflush]
  473     0 [pdflush]
[...]
 4028 17556 nautilus --no-default-window --sm-client-id default2
 4118 17800 ksnapshot
 4114 19172 sound-juicer
 4023 25144 gnome-panel --sm-client-id default1
 4047 31400 mono-best --debug /usr/lib/beagle/Best.exe --autostarted
 3973 31520 mono-beagled --debug /usr/lib/beagle/BeagleDaemon.exe --bg --aut

Hasznos ps hívások

ps aux --sort oszlop

A kimenet oszlop szerinti rendezése. Az oszlop helyén a következők lehetnek:

pmem fizikai memória aránya
pcpu CPU aránya
rss resident set size (nem a cserepartíciót használó fizikai memória)
ps axo pid,%cpu,rss,vsz,args,wchan

Megjeleníti az összes folyamatot, azok PID-jét, CPU felhasználását, memóriaméretét (belsőt és virtuálist), nevét és a rendszerhívását.

ps axfo pid,args

Megjeleníti a folyamatfát (melyik folyamat melyikhez kapcsolódik).

13.3.3. Folyamatfa: pstree

A pstree parancs fa formában állítja elő a folyamatok listáját:

tux@mercury:~> pstree
init-+-NetworkManagerD
     |-acpid
     |-3*[automount]
     |-cron
     |-cupsd
     |-2*[dbus-daemon]
     |-dbus-launch
     |-dcopserver
     |-dhcpcd
     |-events/0
     |-gpg-agent
     |-hald-+-hald-addon-acpi
     |      `-hald-addon-stor
     |-kded
     |-kdeinit-+-kdesu---su---kdesu_stub---yast2---y2controlcenter
     |         |-kio_file
     |         |-klauncher
     |         |-konqueror
     |         |-konsole-+-bash---su---bash
     |         |         `-bash
     |         `-kwin
     |-kdesktop---kdesktop_lock---xmatrix
     |-kdesud
     |-kdm-+-X
     |     `-kdm---startkde---kwrapper
[...]

A -p paraméter hozzáadja a folyamatazonosítót egy adott névhez. Ha a parancssorokat is szeretné megjeleníteni, használja a -a paramétert.

13.3.4. Folyamatok táblázata: top

A top parancs amely a table of processes névből ered megjeleníti a folyamatok listáját, amely két másodpercenként frissül. A program lezárásához nyomja meg a Q gombot. A -n 1 paraméter a folyamatlista egyetlen megjelenése után lezárja a programot. Az alábbiakban egy példa a top -n 1 parancs kimenetére:

tux@mercury:~> top -n 1
top - 17:06:28 up  2:10,  5 users,  load average: 0.00, 0.00, 0.00
Tasks:  85 total,   1 running,  83 sleeping,   1 stopped,   0 zombie
Cpu(s):  5.5% us,  0.8% sy,  0.8% ni, 91.9% id,  1.0% wa,  0.0% hi,  0.0% si
Mem:    515584k total,   506468k used,     9116k free,    66324k buffers
Swap:   658656k total,        0k used,   658656k free,   353328k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      16   0   700  272  236 S  0.0  0.1   0:01.33 init
    2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    3 root      10  -5     0    0    0 S  0.0  0.0   0:00.27 events/0
    4 root      10  -5     0    0    0 S  0.0  0.0   0:00.01 khelper
    5 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kthread
   11 root      10  -5     0    0    0 S  0.0  0.0   0:00.05 kblockd/0
   12 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid
  472 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pdflush
  473 root      15   0     0    0    0 S  0.0  0.0   0:00.06 pdflush
  475 root      11  -5     0    0    0 S  0.0  0.0   0:00.00 aio/0
  474 root      15   0     0    0    0 S  0.0  0.0   0:00.07 kswapd0
  681 root      10  -5     0    0    0 S  0.0  0.0   0:00.01 kseriod
  839 root      10  -5     0    0    0 S  0.0  0.0   0:00.02 reiserfs/0
  923 root      13  -4  1712  552  344 S  0.0  0.1   0:00.67 udevd
 1343 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 khubd
 1587 root      20   0     0    0    0 S  0.0  0.0   0:00.00 shpchpd_event
 1746 root      15   0     0    0    0 S  0.0  0.0   0:00.00 w1_control
 1752 root      15   0     0    0    0 S  0.0  0.0   0:00.00 w1_bus_master1
 2151 root      16   0  1464  496  416 S  0.0  0.1   0:00.00 acpid
 2165 messageb  16   0  3340 1048  792 S  0.0  0.2   0:00.64 dbus-daemon
 2166 root      15   0  1840  752  556 S  0.0  0.1   0:00.01 syslog-ng
 2171 root      16   0  1600  516  320 S  0.0  0.1   0:00.00 klogd
 2235 root      15   0  1736  800  652 S  0.0  0.2   0:00.10 resmgrd
 2289 root      16   0  4192 2852 1444 S  0.0  0.6   0:02.05 hald
 2403 root      23   0  1756  600  524 S  0.0  0.1   0:00.00 hald-addon-acpi
 2709 root      19   0  2668 1076  944 S  0.0  0.2   0:00.00 NetworkManagerD
 2714 root      16   0  1756  648  564 S  0.0  0.1   0:00.56 hald-addon-stor

Alapértelmezés szerint a kimenet a CPU felhasználás szerint kerül megjelenítésre (%CPU oszlop, Shift+P gyorsbillentyű). A rendezés módja az alábbi gyorsbillentyűkkel módosítható:

Shift+M: Belső memória (RES)
Shift+N: Folyamat ID (PID)
Shift+T: Idő (TIME+)

Bármely más mező alapján történő kereséshez az F billentyű megnyomása után megjelenő listából lehet választani. A rendezés sorrend módosítása az Shift+R billentyű megnyomásával történik.

A -U UID paraméter csak egy adott felhasználóhoz rendelt folyamatokat figyeli. Helyettesítse be az UID értéket a felhasználó azonosítójával. Az aktuális felhasználó folyamatainak megjelenítéséhez a top -U $(id -u) parancs használható.

13.3.5. Egy folyamat nice értékének módosítása: nice és renice

A kernel a nice szint alapján (amit niceness-nek nevezünk) meghatározza, hogy melyik folyamatnak van szüksége több CPU-időre. Minél magasabb a folyamat nice-szintje, annál kevesebb CPU-időt vehet el más folyamatoktól. A nice értékek -20-tól (ez a legalacsonyabb nice szint) 19-ig mehetnek. Negatív értékeket csak a root felhasználó állíthat be.

A nice-szint módosítása hasznos például, ha egy rendszeren, amelyen egyéb feladatok is futnak, egy nagy, nem időkritikus folyamatot futtat, amely sokáig tart és sok CPU-időt igényel (ilyen például a kernelfordítás). Egy ilyen folyamat nice-szintjének emelésével garantálható, hogy a többi feladat például a webkiszolgáló magasabb prioritást élvezhet.

A nice paraméterek nélküli meghívása kiírja az aktuális nice értéket.

tux@mercury:~> nice
0

A nice parancs_neve parancs 10-zel megnöveli az adott parancs nice-értékét. A nice -n szint parancs_neve paranccsal az előzőhöz képest relatíve módosítható az adott parancs nice-értéke.

Egy folyamat nice-értékének módosításához használja a renice prioritás -p folyamatazonosító parancsot, például:

renice +5 3266

Egy adott felhasználó összes folyamatának a nice -u felhasználó_neve paranccsal lehet módosítani a nice-értékét. A nice -g folyamatcsoport_azonosítója parancs használatával lehet a nice értéket átírni.

13.4. Memória

13.4.1. Memóriahasználat: free

A free segédprogram megvizsgálja a RAM és a swap használatát. A kimenetben mind a szabad, mind a használt memória (és a csereterületek) részletes adatai láthatók:

tux@mercury:~> free
            total       used       free     shared    buffers     cached
Mem:       2062844    2047444      15400          0     129580     921936
-/+ buffers/cache:     995928    1066916
Swap:      2104472          0    2104472

A -b, -k, -m, -g paraméterek használatával az eredményt byte-okban, kilobyte-okban, megabyte-okban illetve gigabyte-okban jelenítik meg. A -d késleltetés paraméter hatására a képernyő késleltetés másodpercenként frissül. A free -d 1.5 parancs például másfél másodpercenként frissíti a képernyőt.

13.4.2. Részletes memóriahasználat: /proc/meminfo

A /proc/meminfo sokkal részletesebb információt ad a memóriahasználatról, mint a free. A free tulajdonképpen ennek a fájlnak a tartalmát használja fel. Az alábbiakban egy 64 bites rendszer kimenete látható. Érdemes megjegyezni, hogy ez kicsit különbözik a 32 bites rendszerek kimenetétől, mivel a memóriakezelésük különböző.

tux@mercury:~> cat /proc/meminfo
MemTotal:        8182956 kB
MemFree:         1045744 kB
Buffers:          364364 kB
Cached:          5601388 kB
SwapCached:         1936 kB
Active:          4048268 kB
Inactive:        2674796 kB
Active(anon):     663088 kB
Inactive(anon):   107108 kB
Active(file):    3385180 kB
Inactive(file):  2567688 kB
Unevictable:           4 kB
Mlocked:               4 kB
SwapTotal:       2096440 kB
SwapFree:        2076692 kB
Dirty:                44 kB
Writeback:             0 kB
AnonPages:        756108 kB
Mapped:           147320 kB
Slab:             329216 kB
SReclaimable:     300220 kB
SUnreclaim:        28996 kB
PageTables:        21092 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6187916 kB
Committed_AS:    1388160 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      133384 kB
VmallocChunk:   34359570939 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:     2689024 kB
DirectMap2M:     5691392 kB

A legfontosabb részek:

MemTotal

Felhasználható memória mérete

MemFree

Felhasznált összes memória mérete

Buffers

Fájlpuffer gyorsítótár a RAM-ban.

Cached

Lapozó gyorsítótár a RAM-ban.

SwapCached

Lapozó gyorsítótár a csereterületen

Active

Jelenleg használt memória, amely normális esetben nem foglalható le. Ez az érték a névtelen memórialapok ( Active (anon) ) és a fájlként tárolt memórialapok (Active (file)) összege.

Inactive

Jelenleg fel nem használt, lefoglalható memória. Ez az érték a névtelen memórialapok ( Inactive (anon) ) és állomány alapú memórialapok ( Inactive (file) ) összege.

SwapTotal

A csereterület teljes mérete

SwapFree

A teljes fel nem használt csereterület

Dirty

Az a memóriamennyiség, amely a merevlemezre történő kiírásra vár

Writeback

Az a memóriamennyiség, amely éppen kiírásra került a merevlemezre

Mapped

Az nmap parancs által fo

Slab

Kernel adatstruktúra gyorsítótár

Committed_AS

Azon becsült teljes memóriamennyiség (RAM és a csereterület), amely a legrosszabb esetben a jelenlegi terheléshez szükséges.

13.4.3. Folyamatok memóriahasználata: smaps

Pontos meghatározása egy bizonyos folyamat által lefoglalt memóriamennyiségnek, amelynek meghatározása nem lehetséges az általánosan használt eszközökkel, mint amilyen a top vagy aps. A pontos adat meghatározásához a kernel 2.6.14-ben megjelenő smaps alrendszerének használata szükséges. Ez a /proc/pid/smaps helyen található és megjeleníti azokat a clean és dirty memórialapokat, amelyeket az adott PID-del rendelkező folyamat használ. Ez különbséget tesz a közös és saját memória között, így megállapítható, hogy egy folyamat mennyi memóriát használ a közös memóriaterületek használata nélkül.

13.5. Hálózatok

13.5.1. A hálózat állapotának megjelenítése: netstat

A netstat a hálózati kapcsolatokat, az útválasztási táblát (-r), a csatolókat (-i), a maszkolási kapcsolatokat (-M), a multicast-tagságokat (-g) és hálózati statisztikákat (-s) jeleníti meg.

tux@mercury:~> netstat -r
Kernel IP routing table
Destination     Gateway         Genmask        Flags  MSS Window  irtt Iface
192.168.2.0     *               255.255.254.0  U        0 0          0 eth0
link-local      *               255.255.0.0    U        0 0          0 eth0
loopback        *               255.0.0.0      U        0 0          0 lo
default         192.168.2.254   0.0.0.0        UG       0 0          0 eth0
tux@mercury:~> netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0   1500   0 1624507 129056      0      0   7055      0      0      0 BMNRU
lo    16436   0   23728      0      0      0  23728      0      0      0 LRU

A hálózati kapcsolatok és statisztikák megjelenítésekor megadható a megjeleníteni kívánt sockettípus: TCP (-t), UDP (-u) vagy nyers (-r). A -p paraméter a programok PID-jét és nevét jeleníti meg, amelyekhez az egyes socketek tartoznak.

Az alábbi példa kiírja az összes TCP-kapcsolatot, illetve az e kapcsolatokat használó programokat.

mercury:~ # netstat -t -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address  Foreign Address       State       PID/Pro
[...]
tcp      0      0 mercury:33513    www.novell.com:www-http ESTABLISHED 6862/fi
tcp      0    352 mercury:ssh      mercury2.:trc-netpoll     ESTABLISHED 19422/s
tcp      0      0 localhost:ssh  localhost:17828         ESTABLISHED -

A következőkben pedig a TCP protokoll statisztikái láthatók:

tux@mercury:~> netstat -s -t
Tcp:
    2427 active connections openings
    2374 passive connection openings
    0 failed connection attempts
    0 connection resets received
    1 connections established
    27476 segments received
    26786 segments send out
    54 segments retransmited
    0 bad segments received.
    6 resets sent
[...]
    TCPAbortOnLinger: 0
    TCPAbortFailed: 0
    TCPMemoryPressures: 0

13.5.2. Interaktív hálózati felügyelet: iptraf

Az iptraf segédprogram egy menüvel rendelkező helyi hálózati felügyeleti eszköz. Hálózati statisztikákat készít, beleértve a TCP és UDP értékek számolását, az Ethernet terhelési adatokat, az IP ellenőrzőösszeg hibákat és még sok mást.

Ha bármilyen kapcsoló használata nélkül indítja el a programot, akkor az interaktív módban indul el. Használhatja a menüket, hogy az iptraf a megfelelő adatokat jelenítse meg. Lehetőség van egy meghatározott hálózati csatoló megadására is.

13.1. ábra - iptraf interaktív módban

iptraf interaktív módban

Az iptraf parancs több kapcsolóval is használható és batch módban is lehet futtatni. A következő parancs statisztikát gyűjt az eth0 csatolóról (-i) 1 percen keresztül (-t). A háttérben fog futni (-B) és a statisztikákat az iptraf.log fájlba gyűjti a home könyvtárba (-L).

tux@mercury:~> iptraf -i eth0 -t 1 -B -L ~/iptraf.log

A naplófájlt például a more parancs segítségével lehet megvizsgálni:

tux@mercury:~> more ~/iptraf.log
Mon Mar 23 10:08:02 2010; ******** IP traffic monitor started ********
Mon Mar 23 10:08:02 2010; UDP; eth0; 107 bytes; from 192.168.1.192:33157 to \
 239.255.255.253:427
Mon Mar 23 10:08:02 2010; VRRP; eth0; 46 bytes; from 192.168.1.252 to \
 224.0.0.18
Mon Mar 23 10:08:03 2010; VRRP; eth0; 46 bytes; from 192.168.1.252 to \
 224.0.0.18
Mon Mar 23 10:08:03 2010; VRRP; eth0; 46 bytes; from 192.168.1.252 to \
 224.0.0.18
[...]
Mon Mar 23 10:08:06 2010; UDP; eth0; 132 bytes; from 192.168.1.54:54395 to \
 10.20.7.255:111
Mon Mar 23 10:08:06 2010; UDP; eth0; 46 bytes; from 192.168.1.92:27258 to \
 10.20.7.255:8765
Mon Mar 23 10:08:06 2010; UDP; eth0; 124 bytes; from 192.168.1.139:43464 to \
 10.20.7.255:111
Mon Mar 23 10:08:06 2010; VRRP; eth0; 46 bytes; from 192.168.1.252 to \
 224.0.0.18
--More--(7%)

13.6. A /proc fájlrendszer

A /proc fájlrendszer egy pszeudo-fájlrendszer, amelyben a kernel tárol fontos információkat virtuális fájlok formájában. A CPU típusa például ezzel a paranccsal jeleníthető meg:

tux@mercury:~> cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel(R) Pentium(R) 4 CPU 3.40GHz
stepping        : 3
cpu MHz         : 2800.000
cache size      : 2048 KB
physical id     : 0
[...]

A megszakítások kiosztása és használata a következő paranccsal kérdezhető le:

tux@mercury:~> cat /proc/interrupts
           CPU0
  0:    3577519          XT-PIC  timer
  1:        130          XT-PIC  i8042
  2:          0          XT-PIC  cascade
  5:     564535          XT-PIC  Intel 82801DB-ICH4
  7:          1          XT-PIC  parport0
  8:          2          XT-PIC  rtc
  9:          1          XT-PIC  acpi, uhci_hcd:usb1, ehci_hcd:usb4
 10:          0          XT-PIC  uhci_hcd:usb3
 11:      71772          XT-PIC  uhci_hcd:usb2, eth0
 12:     101150          XT-PIC  i8042
 14:      33146          XT-PIC  ide0
 15:     149202          XT-PIC  ide1
NMI:          0
LOC:          0
ERR:          0
MIS:          0

Néhány fontos fájl és tartalma:

/proc/devices

a rendelkezésre álló eszközök

/proc/modules

a betöltött kernelmodulok

/proc/cmdline

kernel parancssor

/proc/meminfo

részletes adatok a memóriahasználatról

/proc/config.gz

az aktuálisan futó kernel gzip-pel tömörített konfigurációs fájlja

További információ az/usr/src/linux/Documentation/filesystems/proc.txt szövegfájlban található (ez a fájl a kernel-source csomag telepítése után érhető el). Az aktuálisan futó folyamatok adatai a /proc/NNN könyvtárakban találhatók meg, ahol az NNN a vonatkozó folyamatok folyamatazonosítója (PID-je). A folyamatok saját jellemzőiket a /proc/self/ könyvtárakban találhatják meg:

tux@mercury:~> ls -l /proc/self
lrwxrwxrwx 1 root root 64 2007-07-16 13:03 /proc/self -> 5356
tux@mercury:~> ls -l /proc/self/
total 0
dr-xr-xr-x 2 tux users 0 2007-07-16 17:04 attr
-r-------- 1 tux users 0 2007-07-16 17:04 auxv
-r--r--r-- 1 tux users 0 2007-07-16 17:04 cmdline
lrwxrwxrwx 1 tux users 0 2007-07-16 17:04 cwd -> /home/tux
-r-------- 1 tux users 0 2007-07-16 17:04 environ
lrwxrwxrwx 1 tux users 0 2007-07-16 17:04 exe -> /bin/ls
dr-x------ 2 tux users 0 2007-07-16 17:04 fd
-rw-r--r-- 1 tux users 0 2007-07-16 17:04 loginuid
-r--r--r-- 1 tux users 0 2007-07-16 17:04 maps
-rw------- 1 tux users 0 2007-07-16 17:04 mem
-r--r--r-- 1 tux users 0 2007-07-16 17:04 mounts
-rw-r--r-- 1 tux users 0 2007-07-16 17:04 oom_adj
-r--r--r-- 1 tux users 0 2007-07-16 17:04 oom_score
lrwxrwxrwx 1 tux users 0 2007-07-16 17:04 root -> /
-rw------- 1 tux users 0 2007-07-16 17:04 seccomp
-r--r--r-- 1 tux users 0 2007-07-16 17:04 smaps
-r--r--r-- 1 tux users 0 2007-07-16 17:04 stat
[...]
dr-xr-xr-x 3 tux users 0 2007-07-16 17:04 task
-r--r--r-- 1 tux users 0 2007-07-16 17:04 wchan

A végrehajtható fájlok és könyvtárak címhozzárendelését a maps fájl tartalmazza:

tux@mercury:~> cat /proc/self/maps
08048000-0804c000 r-xp 00000000 03:03 17753      /bin/cat
0804c000-0804d000 rw-p 00004000 03:03 17753      /bin/cat
0804d000-0806e000 rw-p 0804d000 00:00 0          [heap]
b7d27000-b7d5a000 r--p 00000000 03:03 11867      /usr/lib/locale/en_GB.utf8/
b7d5a000-b7e32000 r--p 00000000 03:03 11868      /usr/lib/locale/en_GB.utf8/
b7e32000-b7e33000 rw-p b7e32000 00:00 0
b7e33000-b7f45000 r-xp 00000000 03:03 8837       /lib/libc-2.3.6.so
b7f45000-b7f46000 r--p 00112000 03:03 8837       /lib/libc-2.3.6.so
b7f46000-b7f48000 rw-p 00113000 03:03 8837       /lib/libc-2.3.6.so
b7f48000-b7f4c000 rw-p b7f48000 00:00 0
b7f52000-b7f53000 r--p 00000000 03:03 11842      /usr/lib/locale/en_GB.utf8/
[...]
b7f5b000-b7f61000 r--s 00000000 03:03 9109       /usr/lib/gconv/gconv-module
b7f61000-b7f62000 r--p 00000000 03:03 9720       /usr/lib/locale/en_GB.utf8/
b7f62000-b7f76000 r-xp 00000000 03:03 8828       /lib/ld-2.3.6.so
b7f76000-b7f78000 rw-p 00013000 03:03 8828       /lib/ld-2.3.6.so
bfd61000-bfd76000 rw-p bfd61000 00:00 0          [stack]
ffffe000-fffff000 ---p 00000000 00:00 0          [vdso]

13.6.1. procinfo

A /proc fájlrendszer fontos adatainak összefoglalására szolgál a procinfo parancs:

tux@mercury:~> procinfo
Linux 2.6.32.7-0.2-default (geeko@buildhost) (gcc 4.3.4) #1 2CPU

Memory:      Total        Used        Free      Shared     Buffers
Mem:       2060604     2011264       49340           0      200664
Swap:      2104472         112     2104360

Bootup: Wed Feb 17 03:39:33 2010    Load average: 0.86 1.10 1.11 3/118 21547

user  :       2:43:13.78   0.8%  page in :   71099181  disk 1:  2827023r 968
nice  :   1d 22:21:27.87  14.7%  page out:  690734737
system:      13:39:57.57   4.3%  page act:  138388345
IOwait:      18:02:18.59   5.7%  page dea:   29639529
hw irq:       0:03:39.44   0.0%  page flt: 9539791626
sw irq:       1:15:35.25   0.4%  swap in :         69
idle  :   9d 16:07:56.79  73.8%  swap out:        209
uptime:   6d 13:07:11.14         context :  542720687

irq  0: 141399308 timer          irq 14:   5074312 ide0
irq  1:     73784 i8042          irq 50:   1938076 uhci_hcd:usb1, ehci_
irq  4:         2                irq 58:         0 uhci_hcd:usb2
irq  6:         5 floppy [2]     irq 66:    872711 uhci_hcd:usb3, HDA I
irq  7:         2                irq 74:        15 uhci_hcd:usb4
irq  8:         0 rtc            irq 82: 178717720 0         PCI-MSI  e
irq  9:         0 acpi           irq169:  44352794 nvidia
irq 12:         3                irq233:   8209068 0         PCI-MSI  l

Az összes információ megjelenítéséhez használja a -a paramétert. A -nN paraméter minden N másodpercben frissíti az adatokat. Ebben az esetben a program lezárásához nyomja meg a q billentyűt.

Alapértelmezésben az összesített adatok kerülnek megjelenítésre. A -d paraméter különbségi értékeket szolgáltat. A procinfo -dn5 az utolsó öt másodpercben módosult adatokat jeleníti meg:

13.7. Hardverinformáció

13.7.1. PCI erőforrások: lspci

[Note]Hozzáférés a PCI beállításokhoz.

A legtöbb operációs rendszernél root felhasználói jogosultságok kellenek a PCI beállítások eléréséhez.

Az lspci parancs felsorolja a PCI-erőforrásokat:

mercury:~ # lspci
00:00.0 Host bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE \
    DRAM Controller/Host-Hub Interface (rev 01)
00:01.0 PCI bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE \
    Host-to-AGP Bridge (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM \
    (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM \
    (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM \
    (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM \
    (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 81)
00:1f.0 ISA bridge: Intel Corporation 82801DB/DBL (ICH4/ICH4-L) \
    LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801DB (ICH4) IDE \
    Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) \
    SMBus Controller (rev 01)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM \
    (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
01:00.0 VGA compatible controller: Matrox Graphics, Inc. G400/G450 (rev 85)
02:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (LOM) \
    Ethernet Controller (rev 81)

A -v paraméter használata részletesebb felsorolást eredményez:

mercury:~ # lspci -v
[...]
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet \
Controller (rev 02)
  Subsystem: Intel Corporation PRO/1000 MT Desktop Adapter
  Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 19
  Memory at f0000000 (32-bit, non-prefetchable) [size=128K]
  I/O ports at d010 [size=8]
  Capabilities: [dc] Power Management version 2
  Capabilities: [e4] PCI-X non-bridge device
  Kernel driver in use: e1000
  Kernel modules: e1000

Az eszközök nevének feloldásáról az /usr/share/pci.ids ad információt. Az ebben a fájlban fel nem sorolt PCI-azonosítók Unknown device (ismeretlen eszköz) megjelölést kapnak.

A -vv paraméter minden egy program által lekérdezhető információt megad. Tisztán numerikus értékek megadásához a -n paramétert kell használni.

13.7.2. USB-eszközök: lsusb

Az lsusb parancs kilistázza az összes USB-eszközt. A -v paraméter hatására részletesebb listát ír ki. A részletes adatokat a /proc/bus/usb/ könyvtárból olvassa a program. A következőkben az lsusb parancs kimenete látható, a következő csatlakoztatott USB-eszközök esetén: USB-elosztó, USB-kulcs, merevlemez és egér.

mercury:/ # lsusb
Bus 004 Device 007: ID 0ea0:2168 Ours Technology, Inc. Transcend JetFlash \
    2.0 / Astone USB Drive
Bus 004 Device 006: ID 04b4:6830 Cypress Semiconductor Corp. USB-2.0 IDE \
    Adapter
Bus 004 Device 005: ID 05e3:0605 Genesys Logic, Inc.
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 005: ID 046d:c012 Logitech, Inc. Optical Mouse
Bus 001 Device 001: ID 0000:0000

13.8. Fájlok és fájlrendszerek

13.8.1. Fájltípus meghatározása: file

A file meghatározza egy fájl vagy fájlok listájának típusát az /usr/share/misc/magic fájl alapján.

tux@mercury:~> file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), \
    for GNU/Linux 2.6.4, dynamically linked (uses shared libs), stripped

A -f lista paraméter a megvizsgálandó fájlnevek listáját tartalmazó fájlt határoz meg. A -z paraméter hatására a file tömörített fájlok belsejébe is belenéz:

tux@mercury:~> file /usr/share/man/man1/file.1.gz
usr/share/man/man1/file.1.gz: gzip compressed data, from Unix, max compression
tux@mercury:~> file -z /usr/share/man/man1/file.1.gz
/usr/share/man/man1/file.1.gz: troff or preprocessor input text \
    (gzip compressed data, from Unix, max compression)

Az -i paraméter a mime type-ot jeleníti meg a hagyományos leírás helyett.

tux@mercury:~> file -i /usr/share/misc/magic
/usr/share/misc/magic: text/plain charset=utf-8

13.8.2. Fájlrendszerek és használatuk: mount, df és du

A mount parancs megmutatja, melyik fájlrendszer (eszköz és típus) van melyik csatolási pontra felcsatolva:

tux@mercury:~> mount
/dev/sda3 on / type reiserfs (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
udev on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/sda1 on /boot type ext2 (rw,acl,user_xattr)
/dev/sda4 on /local type reiserfs (rw,acl,user_xattr)
/dev/fd0 on /media/floppy type subfs (rw,nosuid,nodev,noatime,fs=floppyfss,p

A fájlrendszerek teljes kihasználtságáról a df paranccsal kaphat információt. A -h (vagy--human-readable) paraméter az átlagos felhasználó számára érthető formába önti a kimenetet.

tux@mercury:~> df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              11G  3.2G  6.9G  32% /
udev                  252M  104K  252M   1% /dev
/dev/sda1              16M  6.6M  7.8M  46% /boot
/dev/sda4              27G   34M   27G   1% /local

Egy adott könyvtárban az alkönyvtárakban található fájlok összméretének megjelenítéséhez adja ki a du parancsot. Az -s paraméter nem jeleníti meg a részletes adatokat, csak azok összegzését. Megint csak, a -h könnyen érthető formába önti a kimenetet:

tux@mercury:~> du -sh /opt
192M    /opt

13.8.3. További információk az ELF bináris állományokról

A bináris állományok tartalma a readelf segédprogrammal olvasható. Ez más hardverarchitektúrákhoz készült ELF-fájlokkal is működik.

tux@mercury:~> readelf --file-header /bin/ls
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x402540
  Start of program headers:          64 (bytes into file)
  Start of section headers:          95720 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         9
  Size of section headers:           64 (bytes)
  Number of section headers:         32
  Section header string table index: 31

13.8.4. Fájltulajdonságok: stat

A stat parancs megjeleníti a fájltulajdonságokat:

tux@mercury:~> stat /etc/profile
  File: `/etc/profile'
  Size: 9662      	Blocks: 24         IO Block: 4096   regular file
Device: 802h/2050d	Inode: 132349      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-03-20 07:51:17.000000000 +0100
Modify: 2009-01-08 19:21:14.000000000 +0100
Change: 2009-03-18 12:55:31.000000000 +0100

A --file-system paraméter részletesen megadja annak a fájlrendszernek a tulajdonságait, amelyben a megadott fájl található:

tux@mercury:~> stat /etc/profile --file-system
  File: "/etc/profile"
    ID: d4fb76e70b4d1746 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 2581445    Free: 1717327    Available: 1586197
Inodes: Total: 655776     Free: 490312

13.9. Felhasználó adatai

13.9.1. Adott fájlokat használó felhasználók: fuser

Ez a parancs annak eldöntésére lehet hasznos, hogy jelenleg milyen folyamatok vagy felhasználók használnak bizonyos fájlokat. Tegyük fel például, hogy le szeretné csatolni az /mnt könyvtárhoz csatolt fájlrendszert. Az umount parancs kimenete: „device is busy” (az eszköz foglalt). Ekkor a fuser paranccsal meg lehet állapítani, mely folyamatok is használják pillanatnyilag az eszközt:

tux@mercury:~> fuser -v /mnt/*

                     USER        PID ACCESS COMMAND
/mnt/notes.txt       tux    26597 f....  less

A less folyamat lezárását követően (amely egy másik terminálon futott), a fájlrendszer sikeresen lecsatolható. A -k kapcsoló használatával, az fuser leállítja azokat a folyamatokat is, amelyek a fájlt használják.

13.9.2. Ki mit csinál: w

A w parancs megjeleníti, hogy ki van bejelentkezve a rendszerre és mit csinál éppen. Például:

tux@mercury:~> w
 14:58:43 up 1 day,  1:21,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
tux      :0        12:25   ?xdm?   1:23   0.12s /bin/sh /usr/bin/startkde
root     pts/4     14:13    0.00s  0.06s  0.00s w

Ha a felhasználók bármelyike távolról jelentkezett be, akkor a -f megjeleníti a számítógépeket, amelyekről a kapcsolatot létesítették.

13.10. Idő és dátum

13.10.1. Időmérés a time paranccsal

A parancsok által felhasznált idő a time segédprogrammal mérhető. Ez a segédprogram két verzióban létezik: mint egy parancsértelmező beépített része, és mint program (/usr/bin/time).

tux@mercury:~> time find . > /dev/null

real    0m4.051s
user    0m0.042s
sys     0m0.205s

13.11. Adatok megjelenítése grafikonon: RRDtool

Számos olyan adat létezek, amely egyszerűen mérhető az idő függvényében. Például, a hőmérséklet-változás, vagy a hálózati csatolón keresztül küldött és érkező adatok mennyisége. Az RRDtool segítségével lehet tárolni és megjeleníteni ezeket az adatokat részletes és testreszabható grafikonok használatával.

Az RRDtool elérhető a legtöbb UNIX platformon és a Linux disztribúciókban. Így az openSUSE disztribúciónak is része. Telepíthető a YaST-on keresztül, vagy a , root felhasználóként indított parancs segítségével:

zypper install rrdtool

[Tip]

Perl-, Python-, Ruby- vagy PHP-kötések is elérhetők hozzá, így szabadon és viszonylag egyszerűen lehet fejleszteni hozzá.

13.11.1. RRDtool működése

Az RRDtool a Round Robin Database tool rövidítése. A Round Robin egy módszer, valamely állandó mennyiségű adat kezeléséhez. A cirkuláris buffer elvét használja, amelynél az olvasott adatnak nincsen sem eleje, sem vége. Az RRDtool Round Robin adatbázisokat használ az adatok tárolására és kiolvasására.

Ahogy arról már korábban is szó volt, az RRDtool olyan adatok feldolgozására lett tervezve, amelyek egy bizonyos idősíkon változnak. Az ideális esetben ez egy érzékelő által szolgáltatott, rendszeres időközönként beolvasott adat (mint a hőmérséklet, sebesség stb.), ami egy megadott formában kerül exportálásra. Az ilyen jellegű adatokat az RRDtool könnyedén képes feldolgozni.

Néha nem lehetséges az adatokat automatikusan és meghatározott időközönként kinyerni. Az ilyen jellegű adatok előfeldolgozása szükséges mielőtt az RRDtool-nak átadásra kerülnek és gyakran kézzel kell az adatfájlt módosítani.

Egy egyszerű példa az RRDtool használatára. A következő példában látható az RRDtool használatának három fontos fázisa: adatbázis létrehozása creating, mérési adatok frissítése updating és az adatok megjelenítése viewing.

13.11.2. Egyszerű példa a valós életből

Tegyük fel, hogy szeretnénk összegyűjteni és megjeleníteni a Linux memóriahasználattal kapcsolatos információit és azok változását az idő elteltével. Ahhoz, hogy a példa érdekesebb legyen, mérjük a jelenleg szabad memória mennyiségét 40 másodpercig, 4 másodperces időközönként. A mérés alatt három memóriaigényes alkalmazást indítunk el, majd zárunk be: egy Firefox webböngészőt, egy Evolution levelezőklienst, és az Eclipse fejlesztői keretrendszert.

13.11.2.1. Adatgyűjtés

Az RRDtool széles körben elterjedt a hálózati adatok mérésére és megjelenítésére. Ehhez az Simple Network Management Protocolt (SNMP) használja. Ez a protokoll képes lekérdezni a hálózati eszközök értékeit. Pontosan ezek az értékek kerülnek eltárolásra az RRDtool segítségével. Az SNMP-vel kapcsolatos további tudnivalók a http://www.net-snmp.org/ weboldalon találhatók.

Jelen eset azonban más – kézzel kell az adatokat begyűjteni. A free_mem.sh parancsfájl folyamatosan kiolvassa a szabad memória aktuális méretét és azt kiírja a szabványos kimenetre.

tux@mercury:~> cat free_mem.sh
INTERVAL=4
for steps in {1..10}
do
    DATE=`date +%s`
    FREEMEM=`free -b | grep "Mem" | awk '{ print $4 }'`
    sleep $INTERVAL
    echo "rrdtool update free_mem.rrd $DATE:$FREEMEM"
done

Érdemes megemlíteni

  • Az időintervallum 4 másodpercre van beállítva, és a sleep parancsot használja.

  • Az RRDtool a Unix time elnevezésű speciális formátumban fogadja az időbélyegeket. Ez az 1970. január 1. (UTC) óta eltelt idő másodpercben. Például az 1272907114 érték a 2010-05-03 17:18:34 időpontot jelöli.

  • A szabad memória információ byte-ban jelenik meg a free-b parancs használatával. Javasolt valamilyen alapegység (byte) használata, mint annak valamelyik többszöröse (mint kilobyte).

  • A sor az echo ... paranccsal tartalmazza az adatbázis jövőben fájlnevét (free_mem.rrd), és együtt egy parancssort hoznak létre az RRDtool értékek frissítéséhez.

A free_mem.sh futtatását követően, a kimenet valahogy így néz ki:

tux@mercury:~> sh free_mem.sh
rrdtool update free_mem.rrd 1272974835:1182994432
rrdtool update free_mem.rrd 1272974839:1162817536
rrdtool update free_mem.rrd 1272974843:1096269824
rrdtool update free_mem.rrd 1272974847:1034219520
rrdtool update free_mem.rrd 1272974851:909438976
rrdtool update free_mem.rrd 1272974855:832454656
rrdtool update free_mem.rrd 1272974859:829120512
rrdtool update free_mem.rrd 1272974863:1180377088
rrdtool update free_mem.rrd 1272974867:1179369472
rrdtool update free_mem.rrd 1272974871:1181806592

Érdemes a parancs kimenetét egy fájlba irányítani:

sh free_mem.sh > free_mem_updates.log

annak érdekében, hogy könnyen feldolgozható legyen a jövőben.

13.11.2.2. Adatbázis létrehozása

A Round Robin adatbázis a példánk szerint a következő parancs segítségével hozható létre:

rrdtool create free_mem.rrd --start 1272974834 --step=4 \
DS:memory:GAUGE:600:U:U RRA:AVERAGE:0.5:1:24

Érdemes megemlíteni

  • Ez a parancs létrehoz egy free_mem.rrd nevű fájlt a mért értékek Round Robin típusú adatbázisban való tárolására.

  • A --start kapcsoló segítségével lehet beállítani azt időpontot (a Unix időt), amelytől kezdődően az első érték bekerül az adatbázisba. Ebben a példában, ez eggyel kevesebb, mint a free_mem.sh korábbi értékének kimenete (1272974835).

  • A --step kapcsoló határozza meg, hogy a mért értékek milyen időközönként kerüljenek az adatbázisba.

  • A DS:memory:GAUGE:600:U:U rész egy új adatforrást állít be az adatbázis részére. Ennek neve memory, típusa gauge, a frissítések között eltelt maximális idő 600 másodperc, és a minimális és maximális mérési tartomány ismeretlen (U, mint unknown).

  • Az RRA:AVERAGE:0.5:1:24 egy Round Robin archívumot (RRA) hoz létre, amelyben a konszolidáció funkciók (CF) által feldolgozott adatok kerülnek tárolásra, amely kiszámolja az átlagos adatokat. A konszolidáció funkció végén található 3 paraméter.

Ha nem jelenik meg hibaüzenet, akkor a free_mem.rrd adatbázis létrejön a jelenlegi könyvtárban:

tux@mercury:~> ls -l free_mem.rrd
-rw-r--r-- 1 tux users 776 May  5 12:50 free_mem.rrd

13.11.2.3. Értékek frissítése az adatbázisban

Az adatbázis létrehozását követően fel kell tölteni a mért adatokkal. A korábbi példában (13.11.2.1. - Adatgyűjtés) már létrejött egy free_mem_updates.log fájl, amely rrdtool update parancsokat tartalmaz. Ezek a parancsok végzik el az értékek frissítését az adatbázisban.

tux@mercury:~> sh free_mem_updates.log; ls -l free_mem.rrd
-rw-r--r--  1 tux users  776 May  5 13:29 free_mem.rrd

Ahogy az látható a free_mem.rrd mérete nem változik az adatok frissítését követően.

13.11.2.4. Mért eredmények megtekintése

A mért adatok megvannak, az adatbázis létrehozása megtörtént és az értékek is belekerültek. Most már elkezdődhet a munka az adatbázissal és lekérdezhetjük vagy megjeleníthetjük az értékeket.

Az adatbázisban található összes érték lekérdezéséhez a következő parancs megadása szükséges:

tux@mercury:~> rrdtool fetch free_mem.rrd AVERAGE --start 1272974830 \
--end 1272974871
          memory
1272974832: nan
1272974836: 1.1729059840e+09
1272974840: 1.1461806080e+09
1272974844: 1.0807572480e+09
1272974848: 1.0030243840e+09
1272974852: 8.9019289600e+08
1272974856: 8.3162112000e+08
1272974860: 9.1693465600e+08
1272974864: 1.1801251840e+09
1272974868: 1.1799787520e+09
1272974872: nan

Érdemes megemlíteni

  • Az AVERAGE az átlagértékeket tölti le az adatbázisból, mivel csak egyetlen adatforrás van megadva (13.11.2.2. - Adatbázis létrehozása) az AVERAGE feldolgozásához.

  • A kimenet első sora a 13.11.2.2. - Adatbázis létrehozása példában megadott módon írja ki az adatforrás nevét.

  • A bal oldali oszlopban szereplő eredmények független pontokat jelölnek az időben, míg a jobb oldaliban látható a megfelelő mért átlagos értékek tudományos formátumban.

  • A nan az utolsó sorban azt jelöli, hogy nem szám.

Grafikon készítése az adatbázisban található adatok alapján.

tux@mercury:~> rrdtool graph free_mem.png \
--start 1272974830 \
--end 1272974871 \
--step=4 \
DEF:free_memory=free_mem.rrd:memory:AVERAGE \
LINE2:free_memory#FF0000 \
--vertical-label "GB" \
--title "Free System Memory in Time" \
--zoom 1.5 \
--x-grid SECOND:1:SECOND:4:SECOND:10:0:%X

Érdemes megemlíteni

  • A free_mem.png az elkészült grafikon fájlneve.

  • A --start és --end értékei határozzák meg a grafikon által megjelenített időtartományt.

  • A --step határozza meg a grafikon időléptékét (másodpercben).

  • A DEF:... rész a free_memory elnevezésű adatdefiníció. Az adatok a free_mem.rrd adatbázisból és a memory elnevezésű adatforrásból kerülnek kiolvasásra. Az average (átlag) értékek számításra kerülnek, mivel nincs más meghatározva a 13.11.2.2. - Adatbázis létrehozása példában.

  • A LINE... rész határozza meg a grafikon vonalának tulajdonságait. Ez 2 pixel széles, az adatok a free_memory adatbázisból jönnek és a színe pedig piros.

  • --vertical-label határozza meg az y tengely feliratát, a --title a grafikon főcímét határozza meg.

  • A --zoom állítja be a nagyítás mértékét. Ennek az értéknek nagyobbnak kell lennie, mint nulla.

  • Az --x-grid a háló megrajzolását és azok feliratát határozza meg. A példában minden másodperces felbontású, míg a rácsvonal 4 másodpercenként kerül megrajzolásra. A feliratok 10 másodpercenként jelennek meg a rácsvonalak alatt.

13.2. ábra - RRDtool segítségével készített grafikon.

RRDtool segítségével készített grafikon.

13.11.3. További információk

Az RRDtool egy rendkívül összetett segédeszköz, amely számtalan paranccsal és alparanccsal rendelkezik. Némelyik könnyen érthető, de a kívánt eredmény eléréséhez és a megjelenés finomhangolásához jobban meg kell ismerni az eszközt.

Az RRDtool man oldala (man 1 rrdtool) csupán alapvető információkat tartalmaz a programról, ezért érdemes megtekinteni az RRDtool weboldalát. Itt részletes dokumentáció található az rrdtool parancsról és annak alparancsairól. Néhány oktatóanyag is található az RRDtool folyamatainak megértéséhez.

A hálózati forgalom monitorozásához érdemes megnézni az MRTG (Multi Router Traffic Grapher) programot. A MRTGrapher bármilyen hálózati eszköz forgalmáról képes grafikont rajzolni és egyszerűen használható az RRDtool programmal.