Weboldal keresés

A rendszerhasználat, a kimaradások figyelése és a Linux-kiszolgálók hibaelhárítása – 9. rész


Bár a Linux nagyon megbízható, a bölcs rendszergazdáknak meg kell találniuk a módját, hogy folyamatosan figyelemmel kísérjék a rendszer viselkedését és kihasználtságát. A 100%-hoz lehető legközelebbi rendelkezésre állás és az erőforrások rendelkezésre állásának biztosítása számos környezetben kritikus szükséglet. A rendszer múltbeli és jelenlegi állapotának vizsgálata lehetővé teszi számunkra, hogy előre jelezzük és nagy valószínűséggel megelőzzük a lehetséges problémákat.

Bemutatkozik a Linux Foundation Certification Program

Ebben a cikkben bemutatunk néhány olyan eszközt, amelyek a legtöbb upstream disztribúcióban elérhetők a rendszerállapot ellenőrzéséhez, a kimaradások elemzéséhez és a folyamatban lévő problémák hibaelhárításához. A számtalan elérhető adat közül konkrétan a CPU-ra, a tárhely- és memóriahasználatra, az alapvető folyamatkezelésre és a naplóelemzésre fogunk összpontosítani.

Tárhelykihasználás

A Linuxban két jól ismert parancs található a tárhelyhasználat ellenőrzésére: df és du.

Az első, a df (amely a lemezmentességet jelenti), általában a teljes lemezterület-használat jelentésére szolgál fájlrendszerenként.

1. példa: A lemezterület-használat jelentése bájtban és ember által olvasható formátumban

Beállítások nélkül a df a lemezterület-használatot bájtokban jelenti. A -h jelzővel ugyanazokat az információkat jeleníti meg MB vagy GB használatával. Vegye figyelembe, hogy ez a jelentés tartalmazza az egyes fájlrendszerek teljes méretét (1-K blokkokban), a szabad és a rendelkezésre álló területet, valamint az egyes tárolóeszközök csatlakoztatási pontját.

df
df -h

Ez minden bizonnyal szép – de van egy másik korlátozás is, amely használhatatlanná teheti a fájlrendszert, és kifogynak az inode-ok. A fájlrendszerben lévő összes fájl egy olyan inode-hoz van leképezve, amely tartalmazza a metaadatait.

2. példa: Inode használatának ellenőrzése fájlrendszer szerint ember által olvasható formátumban a következővel:
df -hTi

láthatja a felhasznált és elérhető inodok mennyiségét:

A fenti kép szerint 146 használt inode (1%) található a /home-ban, ami azt jelenti, hogy továbbra is 226 000 fájlt hozhat létre az adott fájlrendszerben.

3. példa: Üres fájlok és könyvtárak keresése és/vagy törlése

Vegye figyelembe, hogy a tárhely jóval azelőtt kifogyhat, hogy az inode-ok kifogynának, és fordítva. Emiatt nem csak a tárterület kihasználtságát kell figyelnie, hanem a fájlrendszer által használt inode-ok számát is.

A következő parancsokkal kereshet üres fájlokat vagy könyvtárakat (amelyek 0B-t foglalnak el), amelyek ok nélkül használnak inode-okat:

find  /home -type f -empty
find  /home -type d -empty

Ezenkívül hozzáadhatja a -delete jelzőt az egyes parancsok végéhez, ha ezeket az üres fájlokat és könyvtárakat is törölni szeretné:

find  /home -type f -empty --delete
find  /home -type f -empty

Az előző eljárás 4 fájlt törölt. Ellenőrizzük újra a használt/elérhető csomópontok számát a /home-ban:

df -hTi | grep home

Amint látja, jelenleg 142 inode van felhasználva (4-gyel kevesebb, mint korábban).

4. példa: Lemezhasználat vizsgálata könyvtár szerint

Ha egy bizonyos fájlrendszer használata meghaladja az előre meghatározott százalékot, a du (a lemezhasználat rövidítése) segítségével megtudhatja, melyek azok a fájlok, amelyek a legtöbb helyet foglalják el.

A példa a /var-ra van megadva, amely, amint az a fenti első képen látható, 67%-ban van használatban.

du -sch /var/*

Megjegyzés: A fenti alkönyvtárak bármelyikére válthat, hogy megtudja, pontosan mi van bennük, és mennyit foglalnak el az egyes elemek. Ezt az információt ezután felhasználhatja néhány fájl törlésére, ha nincs rájuk szükség, vagy szükség esetén megnövelheti a logikai kötet méretét.

Olvassa el még

  1. 12 Hasznos „df” parancs a lemezterület ellenőrzéséhez
  2. 10 hasznos „du” parancs a fájlok és könyvtárak lemezhasználatának megkeresésére

Memória és CPU kihasználtság

A Linux klasszikus eszköze, amelyet a CPU/memória kihasználtság és a folyamatkezelés átfogó ellenőrzésére használnak, a felső parancs. Ezenkívül a tetején a futó rendszer valós idejű nézete látható. Vannak más eszközök is, amelyek ugyanerre a célra használhatók, mint például a htop, de én a top mellett döntöttem, mert minden Linux disztribúcióban azonnal telepítve van.

5. példa: A rendszer élő állapotának megjelenítése a top gombbal

A kezdéshez egyszerűen írja be a következő parancsot a parancssorba, és nyomja meg az Enter billentyűt.

top

Nézzünk meg egy tipikus csúcskimenetet:

Az 1–5. sorban a következő információk jelennek meg:

1. A jelenlegi idő (20:41:32) és az üzemidő (7 óra 41 perc). Csak egy felhasználó van bejelentkezve a rendszerbe, és a terhelés átlaga az elmúlt 1, 5 és 15 percben. A 0,00, 0,01 és 0,05 azt jelzi, hogy ezen időintervallumok alatt a rendszer az idő 0%-át tétlen volt (0,00: egyetlen folyamat sem várt a CPU-ra), majd 1%-kal túlterhelt (0,01: átlagosan 0,01 folyamat a CPU-ra vártak) és 5% (0,05). Ha kisebb, mint 0, és minél kisebb a szám (például 0,65), a rendszer 35%-ig tétlen volt az elmúlt 1, 5 vagy 15 percben, attól függően, hogy hol jelenik meg a 0,65.

2. Jelenleg 121 folyamat fut (a teljes listát a 6-ban láthatja). Csak 1 fut belőlük (ebben az esetben a tetején, ahogy a %CPU oszlopban is látható), a maradék 120 pedig a háttérben várakozik, de „alszik”, és ebben az állapotban marad, amíg nem hívjuk őket. Hogyan? Ezt úgy ellenőrizheti, hogy megnyit egy mysql promptot, és végrehajt néhány lekérdezést. Észre fogja venni, hogyan növekszik a futó folyamatok száma.

Alternatív megoldásként megnyithat egy webböngészőt, és az Apache által kiszolgált bármely oldalra navigálhat, és ugyanazt az eredményt kapja. Természetesen ezek a példák feltételezik, hogy mindkét szolgáltatás telepítve van a kiszolgálón.

3. us (módosítatlan prioritású felhasználói folyamatok futtatása), sy (kernelfolyamatok futásának ideje), ni (módosított prioritású felhasználói folyamatok futtatása), wa (az I/O befejezésére való várakozás ideje), hi (hardvermegszakítások szervizelésére fordított idő), si (szoftvermegszakítások kiszolgálására fordított idő), st (az aktuális virtuális gépről a hypervisor által ellopott idő – csak virtualizált környezetben).

4. Fizikai memóriahasználat.

5. Helyhasználat csere.

6. példa: Fizikai memóriahasználat ellenőrzése

A RAM-memória és a cserehasználat ellenőrzéséhez használhatja a free parancsot is.

free

Természetesen használhatja a -m (MB) vagy -g (GB) kapcsolót is, hogy ugyanazokat az információkat ember által olvasható formában jelenítse meg:

free -m

Mindenesetre tisztában kell lennie azzal a ténnyel, hogy a kernel a lehető legtöbb memóriát lefoglalja, és a folyamatok számára elérhetővé teszi, amikor kérik. Különösen a „-/+ pufferek/gyorsítótár” sor mutatja a tényleges értékeket az I/O gyorsítótár figyelembevétele után.

Más szóval, a folyamatok által használt memória mennyisége és a többi folyamat számára elérhető memória mennyisége (ebben az esetben 232 MB és 270 MB áll rendelkezésre). Amikor a folyamatoknak szüksége van erre a memóriára, a kernel automatikusan csökkenti az I/O gyorsítótár méretét.

Olvassa el még: 10 hasznos „ingyenes” parancs a Linux memóriahasználat ellenőrzésére

A folyamatok közelebbi pillantása

Egy adott időpontban számos folyamat fut Linux rendszerünkön. Két eszközt fogunk használni a folyamatok szoros megfigyelésére: ps és pstree.

7. példa: A teljes folyamatlista megjelenítése a rendszerben ps-sel (teljes szabványos formátum)

A -e és a -f opciók egybe kombinálásával (-ef) listázhatja a rendszerén jelenleg futó folyamatokat. Ezt a kimenetet átvezetheti más eszközökbe, például a grepbe (az LFCS sorozat 1. részében leírtak szerint), hogy leszűkítse a kimenetet a kívánt folyamat(ok)ra:

ps -ef | grep -i squid | grep -v grep

A fenti folyamatlista a következő információkat mutatja:

a folyamat tulajdonosa, PID, szülő PID (a szülőfolyamat), a processzor kihasználtsága, a parancs indításának időpontja, tty (a ? azt jelzi, hogy démon), a kumulált CPU-idő és a folyamathoz tartozó parancs.

8. példa: A ps kimenetének testreszabása és rendezése

Lehetséges azonban, hogy nincs szüksége mindezekre az információkra, és szeretné megjeleníteni a folyamat tulajdonosát, az elindító parancsot, a PID-t és a PPID-t, valamint a jelenleg használt memória százalékos arányát – ebben a sorrendben, és rendezés szerint. memóriahasználat csökkenő sorrendben (vegye figyelembe, hogy a ps alapértelmezés szerint PID szerint van rendezve).

ps -eo user,comm,pid,ppid,%mem --sort -%mem

Ahol a mínusz jel a %mem előtt a csökkenő sorrendben történő rendezést jelzi.

Ha valamilyen oknál fogva egy folyamat túl sok rendszererőforrást kezd igénybe venni, és ez valószínűleg veszélyezteti a rendszer általános működését, akkor le kell állítani vagy szüneteltetni kell a végrehajtását, és a következő jelzések egyikét átadja neki a kill programmal. Más okok, amiért érdemes ezt megtenni, az az, hogy egy folyamatot az előtérben indított el, de szünetelteti, és a háttérben szeretné folytatni.

Signal name Signal number Description
 SIGTERM 15  Kill the process gracefully.
 SIGINT 2  This is the signal that is sent when we press Ctrl + C. It aims to interrupt the process, but the process may ignore it.
 SIGKILL 9  This signal also interrupts the process but it does so unconditionally (use with care!) since a process cannot ignore it.
 SIGHUP 1  Short for “Hang UP”, this signals instructs daemons to reread its configuration file without actually stopping the process.
 SIGTSTP 20  Pause execution and wait ready to continue. This is the signal that is sent when we type the Ctrl + Z key combination.
 SIGSTOP 19  The process is paused and doesn’t get any more attention from the CPU cycles until it is restarted.
 SIGCONT 18  This signal tells the process to resume execution after having received either SIGTSTP or SIGSTOP. This is the signal that is sent by the shell when we use the fg or bg commands.
9. példa: Egy futó folyamat végrehajtásának szüneteltetése és folytatása a háttérben

Ha egy bizonyos folyamat normál végrehajtása azt jelenti, hogy futás közben nem kerül kimenet a képernyőre, akkor érdemes lehet elindítani a háttérben (és egy "és" jelet fűzve a parancs végéhez).

process_name &

vagy
Miután elkezdett futni az előtérben, szüneteltesse, és küldje el a háttérbe a következővel:

Ctrl + Z
kill -18 PID

10. példa: „Elvadult” folyamat erőszakkal történő megölése

Kérjük, vegye figyelembe, hogy minden disztribúció tartalmaz eszközöket a gyakori szolgáltatások, például a szolgáltatás a SysV-alapú rendszerekben vagy a systemctl a systemd-alapú rendszerekben, kecses leállításához/elindításához/újraindításához/újratöltéséhez.

Ha egy folyamat nem válaszol ezekre a segédprogramokra, akkor erőszakkal megölheti, ha elküldi neki a SIGKILL jelet.

ps -ef | grep apache
kill -9 3821

Szóval.. Mi történt/történik?

Ha bármilyen kimaradás történt a rendszerben (legyen az áramkimaradás, hardverhiba, egy folyamat tervezett vagy nem tervezett megszakítása, vagy egyáltalán bármilyen rendellenesség), a naplók a /var/log a legjobb barátaid, akik meghatározzák, mi történt, vagy mi okozhatja a problémákat, amelyekkel szembesül.

cd /var/log

A /var/log egyes elemei normál szövegfájlok, mások könyvtárak, mások pedig elforgatott (előzményi) naplók tömörített fájljai. Érdemes ellenőrizni azokat, amelyek nevében szerepel a hiba szó, de a többi átvizsgálása is jól jöhet.

11. példa: A naplók vizsgálata a folyamatok hibáira

Képzelje el ezt a forgatókönyvet. A LAN-ügyfelei nem tudnak hálózati nyomtatókra nyomtatni. A helyzet hibaelhárításának első lépése a /var/log/cups könyvtár, és megnézni, mi van benne.

A tail paranccsal megjelenítheti az error_log fájl utolsó 10 sorát, vagy a tail -f error_log parancsot a napló valós idejű nézetéhez.

cd /var/log/cups
ls
tail error_log

A fenti képernyőkép hasznos információkat tartalmaz annak megértéséhez, hogy mi okozhatja a problémát. Vegye figyelembe, hogy a lépések követése vagy a folyamat hibás működésének kijavítása még mindig nem oldja meg az általános problémát, de ha már az elején megszokta, hogy minden alkalommal ellenőrizze a naplókat, amikor probléma merül fel (legyen az helyi vagy hálózati), akkor biztosan jó úton haladok.

12. példa: A naplók vizsgálata hardverhibák keresésére

Bár a hardverhibák hibaelhárítása bonyolult lehet, ellenőriznie kell a dmesg- és az üzenetnaplókat, valamint a grep-et a hibásnak vélt hardverrészhez kapcsolódó szavakért.

Az alábbi kép a /var/log/messages fájlból származik, miután a következő paranccsal megkereste a szóhibát:

less /var/log/messages | grep -i error

Láthatjuk, hogy problémánk van két tárolóeszközzel: /dev/sdb és /dev/sdc, amelyek viszont problémát okoznak a RAID-tömbben.

Következtetés

Ebben a cikkben megvizsgáltunk néhány olyan eszközt, amelyek segíthetnek abban, hogy mindig tisztában legyen rendszere általános állapotával. Ezenkívül meg kell győződnie arról, hogy operációs rendszere és telepített csomagjai frissülnek a legújabb stabil verziókra. És soha, soha ne felejtsd el ellenőrizni a naplókat! Akkor a megfelelő irányba fog haladni, hogy végleges megoldást találjon bármilyen problémára.

Nyugodtan tegye meg észrevételeit, javaslatait vagy kérdéseit – ha van – az alábbi űrlap segítségével.