2012. február 4., szombat

Problémamegoldás

Bármennyire is törekszik a Linux Mint a stabilitásra és felhasználóbarát működésre, egy operációs rendszer komplex dolog. Előbb-utóbb elkerülhetetül kerülünk olyan helyzetbe, amikor valamilyen problémát kell megoldanunk, vagy valamilyen kérdésnek kell utánajárnunk. Ehhez szeretnénk ebben a fejezetben néhány tippet adni. Remélhetőleg ritkán kell majd alkalmaznunk az itt leírtakat, de az oldal elolvasásával szerzett információk növelhetik a biztonságérzetünket, és a rendszer működésére való rálátásunkat.

A probléma átgondolása
Ha gondunk akad, első körben érdemes nyugodtan átgondolni, hogy milyen lépések vezettek a problémához, vissza tudjuk-e fordítani azokat, mit mondanak a hibaüzenetek, találkoztunk-e már hasonlóval. A problémát higgadtan, tárgyilagosan szemlélve sokkal könnyebb megtalálni a megoldást, mintha kétségbe esünk.

Internetes megoldáskeresés
Ha magunktól nem jut eszünkbe semmi, és ismerősünk sincs, akihez tanácsért fordulhatnánk, érdemes szétnézni az interneten. Bár ez kicsit közhelyes, valóban rengeteg információ található a keresők segítségével, és viszonylag valószínűtlen, hogy egy bizonyos problémával mi találkozzunk elsőként.

Az internetes kereséssel kapcsolatosan a következő problémák szoktak felvetődni:
  • Mit, hol keressünk?

  • Honnan tudjuk megállapítani, hogy mi releváns a mi rendszerünkre nézve?

  • Hogyan tudjuk értelmezni a talált információt vagy megoldást?

Mit, hol keressünk?
Leginkább az ismert keresőmotorokat érdemes használnunk, mert ezek gyakran jobban működnek, mint az egyes oldalak keresői. A keresendő kifejezésre nincs tuti recept, de legesélyesebbek akkor vagyunk, ha a konkrét hibaüzenetre, akár idézőjelekkel keresünk. Ha erre túl sok, vagy nem releváns találatot kapunk, érdemes kiegészíteni azt a disztribúciónk, asztali környezetünk vagy az érintett alkalmazás nevével, esetleg verziószámával.

Honnan tudjuk megállapítani, hogy mi releváns a mi rendszerünkre nézve?
Ahhoz, hogy eldöntsük, releváns-e a talált információ, a probléma típusától függően különböző dolgokkal kell tisztában lennünk:
  • Ha valamely programmal van problémánk, a program pontos neve és verziószáma szükséges (a verziószámot leginkább a csomagkezelő segítségével érdemes meghatároznunk, a disztribúciók ugyanis bizonyos csomagokat sokszor eltérően jelölnek, így a teljes verziószám a disztribúcióról is hordozhat információt).

  • Ha az asztali környezetről van szó, annak neve és pontos verziója kell, és a disztribúció neve és verziója is fontos lehet.

  • Hardveres problémák esetén a problémás hardver pontos típusára, a kernel verziójára (Linux Mint 12-nél Linux 3.0.0), valamint a disztribúció adataira van szükségünk.

  • Vegyük figyelembe és használjuk ki, hogy a Linux Mint Ubuntu alapú disztribúció, egész pontosan a Linux Mint 12-es (Lisa) verziója alapul az Ubuntu 11.10-es (Natty) verzióján. Az Ubunturól több dokumentáció érhető el mind magyarul, mind angolul, és ezek többsége a Linux Mintre is érvényes. Az egyetlen, problémamegoldás szempontjából lényeges különbség a két disztribúció között az asztali környezet. Az Ubuntu a Unity-nek nevezett környezetet használja, így az ezzel kapcsolatos információknak nem tudjuk hasznát venni. Ha egy problémával kapcsolatban csak egy másik disztribúcióhoz, vagy verzióhoz kötődően találunk megoldási javaslatot, attól még egy próbát megér, lehet, hogy működik.

Hogyan értelmezzük a kapott információkat?
A kezdő Linux felhasználók sokszor azért nem szeretnek önállóan nekifogni a problémamegoldásnak, mert a talált leírások nem térnek ki minden részletre (már feltételeznek bizonyos ismereteket) vagy számukra érthetetlen nyelvezetűek. Erre igazi megoldás csak a tapasztalat, de hamarosan végignézünk néhány praktikus részletet, ami segít nekikezdeni.

Mit tegyünk, ha nem találtunk megoldást?
Ha próbálkoztunk, de nem sikerült megoldást találnunk, valószínűleg már összegyűjtöttük a fent felsorolt információkat. Nincs más dolgunk, mint nyitni egy témát a fórumon, és feltenni a kérdésünket. A sikeres és gyors segítégnyújtásnak nagyon fontos feltétele a probléma megfelelő bemutatása.

Problémától függően az alábbi információk közül mindenképp foglaljuk a leírásba a rendelkezésre állókat:
  • Pontos hibaüzenet és/vagy a probléma tünetei

  • A Linux Mint melyik verzióját használjuk (esetünkben Linux Mint 12 Gnome)?

  • Melyik program melyik verziójával van problémánk?

  • A problémás hardver pontos típusa

  • A problémához vezető lépések és a kijavítására eddig tett kísérletek
"Napló" vezetése
Hasznos gyakorlat, ha minden fontosabb változtatást, amit a rendszeren végzünk, feljegyzünk magunknak. Amikor tesszük, minden egyértelműnek tűnik, de nem is hisszük, milyen gyorsan bele lehet zavarodni abba, hogy mit is, hogyan is csináltunk.
Ez nem csak a problémák megoldásában segít, de egy esetleges újratelepítés esetén is hasznos forrás lehet számunkra, hiszen rögtön tudjuk, milyen programokat kell utólag telepítenünk, milyen módosításokkal szabtuk testre a rendszert, és ha egy olyan problémával találkoznánk, amit már egyszer megoldottunk, azonnal megtaláljuk a megoldást.

Most pedig tekintsük át azokat a legfontosabb gyakorlati ismereteket, melyek a problémamegoldás során hasznunkra válhatnak.

Terminál használata
A Linuxról sokaknak rögtön a parancssor - Terminál - használata jut eszébe. A Linux Mint, mint a legfelhasználóbarátabb Linux disztribúció, igyekszik a terminál kötelező használatát a minimumra csökkenteni. Ezt elég sikeresen teszi, hiszen az egész ismertető során egyszer sem kellett parancsokhoz folyamodnunk. A Linux Mint kézikönyv is hangsúlyozza ugyanakkor, hogy a terminálra nem mint szükséges rosszra, hanem mint egy erőteljes segédeszközre kell tekintenünk. A Linux parancsokat nem kell fejből tudnunk, de nagyon jól jön, ha néhányukkal és a terminál általános használatával megismerkedünk. A terminál ugyanis a problémák diagnosztizálásának és megoldásának nagyon fontos eszköze lehet.

Az útmutatókban és fórumokon a megoldásokat gyakran akkor is parancsokkal írják le, ha az nem feltétlenül lenne szükséges. Ennek több oka van:
  • A grafikus felületen a megfelelő opcióhoz való navigálás a segítő számára általában hosszabb, bonyolultabb feladat, és aki jól kiigazodik a terminál használatában, annak átláthatóbb, egyszerűbb a "kód", mint a szöveges leírás.

  • A grafikus felülettől független problémák megoldásához asztali környezetenként más-más opciókon keresztül lehet eljutni. A segítséget nyújtó sok esetben nem tudja, milyen asztali környezetet használsz, vagy ő maga nem használta soha. A parancsok ilyen esetben praktikusabbak, hiszen függetlenek az asztali környezettől.

  • A parancsok a nyelvtől is függetlenek. Különösen jól jön ez akkor, ha nem találunk magyar nyelvű megoldást, így ugyanis az angol útmutatóban talált parancsokat ugyanúgy használhatjuk a lokalizált rendszerünkön is.
A leírásokban általában csak megadják a parancsokat, és feltételezik, hogy tudod, hogyan kell őket végrehajtani. Az oldal elolvasása után ez a feltételezés remélhetőleg jogos lesz :)

Először is nyissunk egy terminált! A Terminál az alkalmazások "Kellékek" kategóriájában található, ezenkívül, a menübe vagy az áttekintő nézet keresőjébe való beírással, továbbá a Ctrl + Alt + T billentyűkombinációval is elérhető.

A megnyíló ablakban az ún. promptot látjuk ($ végződéssel), és utána írhatjuk be a parancsokat. Nagyon fontos szem előtt tartani, hogy a Linux - a Windowszal ellentétben - különbséget tesz a kis- és nagybetűk között. Erre mindig figyeljünk oda!


A man parancs

A biztonság kedvéért, mielőtt egy parancsot végrehajtunk, jobb ha utánanézünk, hogy nagyjából mire is való. Nem szokott előfordulni, hogy valaki ártó szándékkal javasol egy parancsot, de ha mégis, a végrehajtásának a következményeit általában nem tudjuk visszafordítani. Ha nem vagyunk benne biztosak, hogy a parancs mit jelent, nézzünk utána a neten vagy a man parancs használatával. Ehhez a prompt után a következőt írjuk (ha van "$" jel a parancsok előtt, az a promptot jelzi, ezt nem kell beírnunk):

$ man parancs_neve

A megnyíló manual oldalon a parancs részletes dokumentációja található. Nem gond, ha nem érted a részleteket, az oldal tetején található rövid leírásból már általában kideríthető, hogy mire való az adott parancs. A man oldalat a "q" betű megnyomásával hagyhatjuk el.

Másolás, beillesztés

A parancsok egyes esetekben elég hosszúk is lehetnek, mint azt az alábbi képen látjuk (ez az egész egy parancs!).

Szerencsére a látott parancsokat nem kell kézzel beírnunk, ugyanis a másolás és beillesztés a terminál ablakban is működik. Az esetleges gépelési hibák kivédése érdekében is érdemes a másolást és beillesztést alkalmazni. A grafikus környezetben használt Ctrl + C (másolás) és Ctrl + V (beillesztés) parancsokat valószínűleg mindenki ismeri, a parancssoros környezetben viszont a Ctrl + C billentyűkombináció a parancs végrehajtásának megszakítását jelenti. A másolás és beillesztés a Ctrl + Shift + C és Ctrl + Shift + V billentyűkkel történik.

Ha tehát valahol látsz egy hasznos parancsot, Ctrl + C-vel másolhatod, majd Ctrl + Shift + V-vel illesztheted a terminálba. Hasonlóképpen, a terminálban kapott információkat Ctrl + Shift + C-vel másoljuk, és a megszokott módon, Ctrl + V-vel illeszthetjük egy dokumentumba.

sudo
A sudo előtagot a parancs elé illesztve az adott parancsot rendszergazdai jogokkal hajthatjuk végre. Alapesetben normál felhasználókként használjuk a gépünket, ami azt jelenti, hogy a jogosultságunk szinte csak a home könyvtárunk módosítására terjed ki. A fájlrendszer más tartományaiban lévő fájlok módosításhoz, szoftvertelepítéshez és bizonyos programok végrehajtásához nincs jogunk. Ez biztonsági szempontból nagyon jó, ám előfordulhat, hogy valamiért mégis szükségünk lenne rá. Erre megoldás a sudo, mely lehetővé teszi, hogy az adott parancs végrehajtásának erejéig root (rendszergazdai) jogosultságot szerezzünk. Ehhez a sudo-val kezdődő parancsok kiadása után meg kell adnunk a jelszavunkat. Amikor a jelszót gépeljük, nem látszanak a beírt karakterek, úgy tűnik, mintha semmit nem írnánk, de ne aggódjunk, ez normális. Ha egyszer megadtuk a jelszavunkat, van egy pár perces bizalmi időkeret, amin belül nem kell ismét megismételnünk.

Valamely könyvtárba való belépés
Gyakran előfordul, hogy egy parancsnál nem mindegy, hogy honnan hajtjuk végre. Amikor nyitunk egy terminált, a home könyvtárunkból indulunk, ezt jelzi a prompt előtt látható ~ jel. Ha egy parancsot másik könyvtárból kell végrehajtani, előbb arra a könyvtárra kell váltanunk. Ezt a cd paranccsal tehetjük meg. Egyes esetekben a megadott parancsok között a cd parancs is fel van sorolva, ilyenkor ezt is másoljuk, és nincs további tennivalónk. Ha azonban csak azt mondják, hogy lépj be az adott könyvtárba ("cd to the directory..."), akkor ezt nekünk kell megtennünk a parancs kiadása előtt.

Ha most tehát a ~, azaz home (azaz teljes nevén /home/usernév) könyvtárunkban vagyunk, és a feladat a .mozilla könyvtárba való belépés, az alábbi parancsot adjuk ki (majd ennek hatására a /home/usernév/.mozilla könyvtárba kerülünk):

$ cd .mozilla

Ha viszont a /var/cache/apt/archives könyvtárba akarunk belépni, a teljes (abszolút) útvonalat kell megadnunk:

$ cd /var/cache/apt/archives

Konfigurációs fájl szerkesztése

Előfordulhat az is, hogy az útmutató szerint valamilyen konfigurációs fájlt kell módosítanunk, pl. egy sort kommentelni benne. A kommentelés azt jelenti, hogy a sor elejére egy # jelet írunk, aminek hatására az adott sor érvénytelenné válik. Hogyan tudjuk ezt megtenni?

Ha rendelkezésünkre áll a grafikus felület, az alábbi parancsot adjuk ki:

$ gksu gedit /a/fajl/utvonala

A gksu a sudo grafikus megfelelője, elhagyható, sőt, elhagyandó, ha a saját home könyvtárunk alatt található fájlt akarunk szerkeszteni. A parancs hatására megnyílik a gedit szövegszerkesztő, és a fájlt a megszokott módon szerkeszthetjük.

Ha valamiért nem jutnánk grafikus környezetbe, használjuk pl. a nano szövegszerkesztőt:

$ sudo nano /a/fajl/utvonala

A nano parancssori szövegszerkesztő, mozogni, törölni, beírni ugyanúgy tudunk benne, mint a grafikus felületen, a mentéshez viszont a Ctrl + O, majd Enter, kilépéshez pedig a Ctrl + X billentyűkombinációt használjuk.

Csomag telepítése vagy eltávolítása

A parancssorból a következőképpen telepíthetünk csomagokat:
$ sudo apt-get update

# csomagok telepítése előtt mindig frissítjük a csomaglistát

$ sudo apt-get install csomag1 csomag2

# ha több mindent akarunk telepíteni, szóközzel egymás után írhatjuk őket

A csomagok eltávolítása hasonló módon történik:
$ sudo apt-get remove csomag1 csomag2

Ezek a parancssoros környezettel kapcsolatos legfontosabb ismeretek, melyek elegendők ahhoz, hogy egy átlagos szintű útmutatót követni tudjunk.

Ha lefagy a rendszerünk, vagy GUI nélkül maradunk
Utolsó témaként vegyük még számba, milyen lehetőségeink vannak, ha a grafikus felületünk hosszabb ideig nem regálna, lefagyna. (Egy-egy alkalmazás fagyása esetén ugyanezeket a lépéseket "sima" terminálból is végrehajthatjuk.)

A bűnös folyamat leállítása
Lehet, hogy egyetlen folyamat okozza a jelenséget, megpróbálhatjuk tehát először csak azt az alkalmazást "lelőni". Ez a módszer azért jó, mert ha beválik, a maradék alkalmazásaink sértetlenül tovább futnak.

Először is egy ún. virtuális terminálra váltunk. A rendszerünkön 6 virtuális terminál áll rendelkezésünkre, melyekre a Ctrl + Alt + F1 - F6 billentyűkkel válthatunk. A Ctrl + Alt + F7 billentyűvel váltunk vissza a grafikus felületre.

Ha nem tudunk mit kezdeni a grafikus felülettel, attól még könnyen lehet, hogy a virtuális terminálok működnek. Nyomjuk meg tehát pl. a Ctrl + Alt + F1 billentyűket. A tty1-gyel jelölt első virtuális terminálon a felhasználónevünkkel és jelszavunkkal be kell jelentkeznünk. Ezután itt is kapunk egy promptot és ugyanúgy kiadhatunk parancsokat, mintha a terminál alkalmazásból tennénk.

Jelen esetben azt szeretnénk kideríteni, hogy melyik alkalmazás miatt fagy a gép, ehhez pedig a top parancsot adjuk ki:

$ top

A következőhöz hasonló táblázatot kapunk:


Megnézzük a %CPU oszlopban, hogy melyik alkalmazás foglalja le rendellenes mértékben a processzort, és megjegyezzük a hozzá tartozó, első oszlopban látható PID számot. Ha sejtjük, hogy melyik program okozza a problémát, akkor annak a PID-jét fogjuk használni. A top parancs megszakításához megnyomjuk a Ctrl + C kombinációt, majd a következő paranccsal végzünk a folyamattal:

$ kill PID

Ha több folyamat is tartozik ugyanahhoz az alkalmazáshoz, akkor a command oszlopban található nevet használjuk az összes befejezésére:

$ killall command

Egyes esetekben nincs jogosultságunk a folyamat leállítására, ekkor megismételjük a parancsot sudo-val.

Legrosszabb esetben pedig (ha még mindig mutatkozna a folyamat a top parancs kimenetében):

$ kill -9 PID

A GUI újraindításása
Ha nem sikerült a problémás folyamatot azonosítanunk, az egész grafikus felület (GUI) újraindításával is próbálkozhatunk. Váltsunk vissza Ctrl + Alt + F7-tel a grafikus felületre, és nyomjuk le egyidejűleg a Ctrl + Alt + Backspace billentyűket. Ha minden jól megy, a bejelentkező képernyőn találjuk magunkat, de az összes felhasználói programunk bezárult.

A gép újraindítása/kikapcsolása szabályosan

Ha az előző lépés se segített, kénytelenek vagyunk a gépet kikapcsolni vagy újraindítani. Ehhez megintcsak egy virtuális terminálra váltunk, bejelentkezünk, és a következő parancsok valamelyikét adjuk ki:

$ sudo halt # leallitas

$ sudo reboot # ujrainditas

Újraindítás mágikusan
Végső esetben, ha az előző parancsokra se reagálna a rendszer, vagy már a virtuális terminál se működne, van egy ún. mágikus billentyűkombináció szekvencia, mellyel a számítógépet biztonságosan - a rendszer károsodását elkerülve - indíthatjuk újra. A SysRq billentyű a legtöbb billentyűzeten megegyezik a PrtScr-nel. A szekvencia így néz ki (tartsunk kb. 1 másodperc szünetet az egyes lépések között):
  • Alt + SysRq + R

  • Alt + SysRq + S

  • Alt + SysRq + E

  • Alt + SysRq + I

  • Alt + SysRq + U

  • Alt + SysRq + B   # ezen a ponton a számítógép újraindul
Ezt a sorozatot nem könnyű megjegyezni, ezért a következő emlékeztető mondatot találták ki rá:
Raising Skinny Elephants Is Utterly Boring

Remélhetőleg viszont olyan ritkán lesz erre szükségünk, hogy még a mondókára sem emlékszünk majd :)

Összefoglalás
Ezzel végére is értünk a problémamegoldás összefoglalójának, ennél többet csak arról és abban a konkrét esetben érdemes tudnunk, ha valamilyen problémánk akad, illetve persze akkor is, ha felkeltette a téma az érdeklődésünket. Nem kell megrémülni az itt látottaktól, a terminál használatába gyorsan bele lehet jönni, az pedig igen ritkán fordul elő, hogy irányíthatatlanná válna a gép, hiszen a Linux jellemzően egy stabil rendszer. Ha jobban el szeretnénk mélyedni a parancssor használatában, az interneten számos leírást találunk. A rendelkezésre álló parancsok rövidebb felsorolását itt, részletes listáját pedig ezen az oldalon tekinthetjük meg.

Ezzel a fejezettel az útmutatónak is a végére értünk, reméljük, hogy sikerült segítséget nyújtanunk a Linux Minttel való ismerkedésben!

Nincsenek megjegyzések:

Megjegyzés küldése