Järjestelmän käytön, seisokkien ja Linux-palvelimien vianmääritys - osa 9


Vaikka Linux on erittäin luotettava, viisaiden järjestelmänvalvojien tulisi löytää tapa pitää silmällä järjestelmän käyttäytymistä ja käyttöä kaikkina aikoina. Varmista, että käyttöaika on mahdollisimman lähellä 100% ja resurssien saatavuus ovat kriittisiä tarpeita monissa ympäristöissä. Järjestelmän menneen ja tämänhetkisen tilan tutkiminen antaa meille mahdollisuuden ennakoida ja todennäköisesti estää mahdollisia ongelmia.

Esittelyssä Linux Foundation -sertifiointiohjelma

Tässä artikkelissa esitämme luettelon muutamista työkaluista, jotka ovat käytettävissä useimmissa alkupään jakeluissa järjestelmän tilan tarkistamiseksi, häiriöiden analysoimiseksi ja käynnissä olevien ongelmien vianmääritykseksi. Erityisesti lukemattomasta käytettävissä olevasta datasta keskitymme suorittimen, tallennustilan ja muistin hyödyntämiseen, perusprosessin hallintaan ja lokianalyysiin.

Tallennustilan käyttö

Linuxissa on 2 tunnettua komentoa, joita käytetään tallennustilan käytön tarkastamiseen: df ja du .

Ensimmäistä, df (joka tarkoittaa levytöntä levyä), käytetään yleensä ilmoittamaan levytilan kokonaiskäyttö tiedostojärjestelmittäin.

Ilman asetuksia df raportoi levytilan käytön tavuina. -h -merkinnällä se näyttää samat tiedot käyttämällä MB tai GB. Huomaa, että tämä raportti sisältää myös kunkin tiedostojärjestelmän kokonaiskoon (1-K-lohkoina), vapaan ja käytettävissä olevan tilan sekä kunkin tallennuslaitteen kiinnityskohdan.

# df
# df -h

Se on varmasti mukavaa - mutta on toinenkin rajoitus, joka voi tehdä tiedostojärjestelmästä käyttökelvottoman, ja inodeista loppuu. Kaikki tiedostojärjestelmän tiedostot kartoitetaan inodiin, joka sisältää sen metatiedot.

# df -hTi

näet käytetyn ja käytettävissä olevan inodin määrän:

Yllä olevan kuvan mukaan in/home-sovelluksessa on 146 käytettyä inodia ( 1% ), mikä tarkoittaa, että voit silti luoda 226 tuhatta tiedostoa kyseiseen tiedostojärjestelmään.

Huomaa, että tallennustila voi loppua kauan ennen inodien loppumista, ja päinvastoin. Tästä syystä sinun on seurattava paitsi tallennustilan käyttöä myös tiedostojärjestelmän käyttämien inodeiden määrää.

Käytä seuraavia komentoja etsiäksesi tyhjiä tiedostoja tai hakemistoja (jotka vievät 0B), jotka käyttävät inodeja ilman syytä:

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

Voit myös lisätä -poista -lipun jokaisen komennon loppuun, jos haluat poistaa myös tyhjät tiedostot ja hakemistot:

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

Edellinen toimenpide poisti 4 tiedostoa. Tarkistetaan uudelleen käytettyjen/käytettävissä olevien solmujen määrä uudelleen/home:

# df -hTi | grep home

Kuten näette, 142 käytettyä inodia on nyt (4 vähemmän kuin aiemmin).

Jos tietyn tiedostojärjestelmän käyttö ylittää ennalta määritetyn prosenttiosuuden, voit käyttää du -näppäintä (lyhenne levyn käytöstä) selvittääksesi, mitkä tiedostot vievät eniten tilaa.

Esimerkki annetaan sanalle /var , jota, kuten näet ensimmäisestä yllä olevasta kuvasta, käytetään 67%: lla.

# du -sch /var/*

Huomaa: Voit siirtyä mihin tahansa yllä olevista alihakemistoista saadaksesi selville, mitä niissä on ja kuinka paljon kukin kohde vie. Tämän jälkeen voit käyttää näitä tietoja joko poistaa joitain tiedostoja, jos niitä ei tarvita, tai pidentää tarvittaessa loogisen taltion kokoa.

Lue myös

  1. 12 hyödyllistä "df" -komentoa levytilan tarkistamiseksi
  2. 10 hyödyllistä du-komentoa tiedostojen ja hakemistojen levykäytön löytämiseksi

Muisti ja suorittimen käyttö

Klassinen Linux-työkalu, jota käytetään suorittimen/muistin käytön ja prosessinhallinnan yleiseen tarkistamiseen, on htop, mutta olen tyytynyt huippuun, koska se on asennettu valmiiksi mihin tahansa Linux-jakeluun.

Aloita kirjoittamalla seuraava komento komentoriville ja painamalla Enter.

# top

Tarkastellaan tyypillistä huippulähtöä:

Riveillä 1 - 5 näytetään seuraavat tiedot:

1. Nykyinen aika (20:41:32 pm) ja käyttöaika (7 tuntia 41 minuuttia). Vain yksi käyttäjä on kirjautunut järjestelmään, ja kuormituksen keskiarvo viimeisen 1, 5 ja 15 minuutin aikana. 0,00, 0,01 ja 0,05 osoittavat, että noiden aikavälien aikana järjestelmä oli käyttämättömänä 0% ajasta (0,00: yksikään prosessi ei odottanut suorittinta), sitten se ylikuormitettiin 1%: lla (0,01: keskimäärin 0,01 prosessilla odotti prosessoria) ja 5% (0,05). Jos alle 0 ja pienempi luku (esimerkiksi 0,65), järjestelmä oli käyttämättömänä 35% viimeisten 1, 5 tai 15 minuutin aikana, riippuen siitä, missä 0,65 näkyy.

2. Tällä hetkellä on käynnissä 121 prosessia (näet täydellisen luettelon kohdasta 6). Vain yksi heistä on käynnissä (tässä tapauksessa ylhäällä, kuten näet% CPU-sarakkeessa) ja loput 120 odottavat taustalla, mutta "nukkuvat" ja pysyvät siinä tilassa, kunnes soitamme heille. Miten? Voit vahvistaa tämän avaamalla mysql-kehotteen ja suorittamalla pari kyselyä. Huomaat kuinka käynnissä olevien prosessien määrä kasvaa.

Vaihtoehtoisesti voit avata verkkoselaimen ja siirtyä mille tahansa sivulle, jota Apache palvelee, ja saat saman tuloksen. Tietenkin näissä esimerkeissä oletetaan, että molemmat palvelut on asennettu palvelimeesi.

3. us (aikakäynnistysprosessit muokkaamattomalla prioriteetilla), sy (aikakäynnistyskerneliprosessit), ni (aikakäynnistetyt käyttäjäprosessit muutetulla prioriteetilla), wa (aika odottaa I/O: n loppuun saattamista), hei (käytetty aika laitteiston keskeytysten hoitamiseen), si (käytetty aika ohjelmistojen keskeytyksiin), st (aika, jonka hypervisori varastaa nykyisestä vm: stä - vain virtualisoiduissa ympäristöissä).

4. Fyysisen muistin käyttö.

5. Vaihda tilankäyttö.

Voit tarkistaa RAM-muistin ja vaihtaa käyttöä myös ilmaiseksi -komennolla.

# free

Tietenkin voit myös käyttää -m (MB) tai -g (GB) -kytkimiä näyttämään samat tiedot ihmisen luettavassa muodossa:

# free -m

Kummassakin tapauksessa sinun on oltava tietoinen siitä, että ydin varaa mahdollisimman paljon muistia ja asettaa sen prosessien saataville, kun ne sitä pyytävät. Erityisesti -/+ puskurit/välimuisti -rivi näyttää todelliset arvot sen jälkeen, kun tämä I/O-välimuisti on otettu huomioon.

Toisin sanoen prosessien käyttämä muistin määrä ja muille prosesseille käytettävissä oleva määrä (tässä tapauksessa 232 MB käytetty ja 270 MB käytettävissä vastaavasti). Kun prosessit tarvitsevat tätä muistia, ydin pienentää automaattisesti I/O-välimuistin kokoa.

Lue myös : 10 hyödyllinen "ilmainen" komento Linux-muistin käytön tarkistamiseksi

Tarkemmin tarkastelemalla prosesseja

Milloin tahansa, Linux-järjestelmässämme on käynnissä monia prosesseja. Prosessien tarkkaan seuraamiseen käytämme kahta työkalua: ps ja pstree .

Käyttämällä -e ja -f -vaihtoehtoja yhdistettynä yhdeksi ( -ef ) voit luetella kaikki järjestelmässäsi käynnissä olevat prosessit. Voit liittää tämän lähdön muihin työkaluihin, kuten grep (kuten selitetään LFCS-sarjan osassa 1), jotta voit rajata lähdön haluamaasi prosessiin:

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

Yllä oleva prosessiluettelo näyttää seuraavat tiedot:

prosessin omistaja, PID, vanhempien PID (pääprosessi), prosessorin käyttö, aika, jolloin komento käynnistettiin, tty (? tarkoittaa, että se on daemon), kumuloitu suorittimen aika ja prosessiin liittyvä komento.

Ehkä et kuitenkaan tarvitse kaikkia näitä tietoja, ja haluaisit näyttää prosessin omistajalle, sen käynnistäneelle komennolle, sen PID- ja PPID-arvot sekä prosenttiosuuden muistista, jota se käyttää tällä hetkellä - tässä järjestyksessä muistin käyttö laskevassa järjestyksessä (huomaa, että ps on oletusarvoisesti lajiteltu PID: n mukaan).

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

Miinusmerkki% mem: n edessä osoittaa lajittelua laskevassa järjestyksessä.

Jos jostakin syystä prosessi alkaa viedä liikaa järjestelmäresursseja ja se todennäköisesti vaarantaa järjestelmän yleisen toiminnallisuuden, sinun on pysäytettävä tai keskeytettävä sen suorittaminen lähettämällä yksi seuraavista signaaleista tapausohjelman avulla. Muita syitä, miksi harkitsisit tämän tekemistä, on, kun olet aloittanut prosessin etualalla, mutta haluat keskeyttää sen ja jatkaa taustalla.

Kun tietyn prosessin normaali suoritus tarkoittaa, että mitään näyttöä ei lähetetä ruudulle sen ollessa käynnissä, voit halutessasi joko käynnistää sen taustalla (lisäämällä tähtimerkki komennon loppuun).

process_name &

tai,
Kun se on alkanut toimia etualalla, keskeytä se ja lähetä se taustalle

Ctrl + Z
# kill -18 PID

Huomaa, että jokainen jakelu tarjoaa työkaluja sulkeutumaan/käynnistämään/käynnistämään/lataamaan uudelleen yleiset palvelut, kuten palvelu SysV-pohjaisissa järjestelmissä tai systemctl järjestelmää käyttävissä järjestelmissä.

Jos prosessi ei vastaa näihin apuohjelmiin, voit tappaa sen väkisin lähettämällä sille SIGKILL-signaalin.

# ps -ef | grep apache
# kill -9 3821

Joten .. Mitä tapahtuu/tapahtuu?

Kun järjestelmässä on esiintynyt minkäänlaista seisokkia (olkoon se sitten sähkökatko, laitteistovika, prosessin suunniteltu tai suunnittelematon keskeyttäminen tai mikä tahansa poikkeavuus), lokitiedosto /var/log ovat parhaita ystäviäsi selvittääkseen, mitä tapahtui tai mikä voi aiheuttaa kohtaamasi ongelmat.

# cd /var/log

Jotkut /var/log -kohdan kohteista ovat tavallisia tekstitiedostoja, toiset ovat hakemistoja ja toiset ovat pakattuja tiedostoja kierretyistä (historiallisista) lokeista. Haluat tarkistaa ne, joiden nimessä on sana virhe, mutta myös muiden tarkastaminen voi olla hyödyllistä.

Kuvaa tämä skenaario. LAN-asiakkaasi eivät pysty tulostamaan verkkotulostimiin. Ensimmäinen vaihe tämän tilanteen vianetsinnässä on /var/log/cups -hakemisto ja nähdä, mitä siellä on.

Voit käyttää häntä -komentoa, kun haluat näyttää error_log-tiedoston viimeiset 10 riviä, tai tail -f error_log , jos haluat nähdä lokin reaaliaikaisen näkymän.

# cd /var/log/cups
# ls
# tail error_log

Yllä oleva kuvakaappaus tarjoaa hyödyllistä tietoa ymmärtääkseen, mikä voi aiheuttaa ongelmasi. Huomaa, että vaiheiden noudattaminen tai prosessin toimintahäiriön korjaaminen ei välttämättä ratkaise yleistä ongelmaa, mutta jos totutat heti alusta alkaen tarkistamaan lokit aina, kun ongelma ilmenee (olipa kyseessä sitten paikallinen tai verkkoyhteys), Tulen ehdottomasti oikealla tiellä.

Vaikka laitteistovikojen vianmääritys voi olla hankalaa, tarkista dmesg ja viestilokit ja tarkista liittyvät sanat laitteisto-osalle, jonka oletetaan olevan viallinen.

Alla oleva kuva on otettu tiedostosta /var/log/messages sen jälkeen, kun olet hakenut sanavirheen seuraavan komennon avulla:

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

Voimme nähdä, että meillä on ongelma kahdella tallennuslaitteella: /dev/sdb ja /dev/sdc , jotka puolestaan aiheuttavat ongelman RAID-ryhmässä.

Johtopäätös

Tässä artikkelissa olemme tutkineet joitain työkaluja, joiden avulla voit olla aina tietoinen järjestelmän yleisestä tilasta. Lisäksi sinun on varmistettava, että käyttöjärjestelmäsi ja asennetut paketit päivitetään uusimpiin vakaisiin versioihin. Älä koskaan unohda tarkistaa lokeja! Sitten siirryt oikeaan suuntaan etsimään lopullisen ratkaisun kaikkiin ongelmiin.

Voit vapaasti jättää kommenttisi, ehdotuksesi tai kysymyksesi - jos sinulla on - alla olevan lomakkeen avulla.