Datorită modificărilor recente ale obiectivelor examenului de certificare LFCS, începând cu 2 februarie 2016, adăugăm articolele necesare la Seria LFCS publicat aici. Pentru a vă pregăti pentru acest examen, sunteți încurajat să parcurgeți Seria LFCE de asemenea.
Fiecare administrator de sistem Linux trebuie să știe cum să verifice integritatea și disponibilitatea hardware-ului, a resurselor și a proceselor cheie. În plus, stabilirea limitelor resurselor pe utilizator trebuie să facă parte, de asemenea, din setul său de abilități.
În acest articol vom explora câteva moduri de a ne asigura că sistemul și hardware-ul sunt atât comportându-se corect pentru a evita potențialele probleme care pot provoca nefuncționări neașteptate ale producției și bani pierderi.
Cu mpstat puteți vizualiza activitățile pentru fiecare procesor individual sau sistemul în ansamblu, atât ca instantaneu unic, fie dinamic.
Pentru a utiliza acest instrument, va trebui să instalați sysstat:
# yum update && yum install sysstat [On CentOSsisteme bazate pe] # aptitutde update && aptitude install sysstat [OnUbuntusisteme bazate pe] # zypper update && zypper install sysstat [OnopenSUSE sisteme]
Citiți mai multe despre sysstat și sunt utilități la Aflați Sysstat și utilitățile sale mpstat, pidstat, iostat și sar în Linux
Odată ce ați instalat mpstat, utilizați-l pentru a genera rapoarte ale statisticilor procesorilor.
A afișa 3 rapoarte globale de utilizare a procesorului (-u
) pentru toate procesoarele (așa cum este indicat de -P
ALL) la un interval de 2 secunde, faceți:
# mpstat -P ALL -u 2 3.
Linux 3.19.0-32-generic (tecmint.com) Miercuri, 30 martie 2016 _x86_64_ (4 CPU) 11:41:07 IST CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% idle. 11:41:09 IST toate 5,85 0,00 1,12 0,12 0,00 0,00 0,00 0,00 0,00 92,91. 11:41:09 IST 0 4,48 0,00 1,00 0,00 0,00 0,00 0,00 0,00 0,00 94,53. 11:41:09 IST 1 2,50 0,00 0,50 0,00 0,00 0,00 0,00 0,00 0,00 97,00. 11:41:09 IST 2 6,44 0,00 0,99 0,00 0,00 0,00 0,00 0,00 0,00 92,57. 11:41:09 IST 3 10.45 0.00 1.99 0.00 0.00 0.00 0.00 0.00 0.00 87.56 11:41:09 IST CPU% usr% nice% sys% iowait% irq% soft% fură% guest% gnice% inactiv. 11:41:11 IST toate 11.60 0.12 1.12 0.50 0.00 0.00 0.00 0.00 0.00 86.66. 11:41:11 IST 0 10,50 0,00 1,00 0,00 0,00 0,00 0,00 0,00 0,00 88,50. 11:41:11 IST 1 14,36 0,00 1,49 2,48 0,00 0,00 0,00 0,00 0,00 81,68. 11:41:11 IST 2 2,00 0,50 1,00 0,00 0,00 0,00 0,00 0,00 0,00 96,50. 11:41:11 IST 3 19.40 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 79.60 11:41:11 IST CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% inactiv. 11:41:13 IST toate 5,69 0,00 1,24 0,00 0,00 0,00 0,00 0,00 0,00 93,07. 11:41:13 IST 0 2,97 0,00 1,49 0,00 0,00 0,00 0,00 0,00 0,00 95,54. 11:41:13 IST 1 10,78 0,00 1,47 0,00 0,00 0,00 0,00 0,00 0,00 87,75. 11:41:13 IST 2 2,00 0,00 1,00 0,00 0,00 0,00 0,00 0,00 0,00 97,00. 11:41:13 IST 3 6,93 0,00 0,50 0,00 0,00 0,00 0,00 0,00 0,00 92,57 Medie: CPU% usr% frumos% sys% iowait% irq% soft% fură% guest% gnice% inactiv. Medie: toate 7,71 0,04 1,16 0,21 0,00 0,00 0,00 0,00 0,00 90,89. Medie: 0 5,97 0,00 1,16 0,00 0,00 0,00 0,00 0,00 0,00 92,87. Medie: 1 9,24 0,00 1,16 0,83 0,00 0,00 0,00 0,00 0,00 0,00 88,78. Medie: 2 3,49 0,17 1,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 95,35. Media: 3 12,25 0,00 1,16 0,00 0,00 0,00 0,00 0,00 0,00 86,59.
Pentru a vizualiza aceleași statistici pentru o anumită CPU (CPU 0 în exemplul următor), utilizați:
# mpstat -P 0 -u 2 3.
Linux 3.19.0-32-generic (tecmint.com) Miercuri, 30 martie 2016 _x86_64_ (4 CPU) 11:42:08 IST CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% idle. 11:42:10 IST 0 3,00 0,00 0,50 0,00 0,00 0,00 0,00 0,00 0,00 96,50. 11:42:12 IST 0 4,08 0,00 0,00 2,55 0,00 0,00 0,00 0,00 0,00 93,37. 11:42:14 IST 0 9,74 0,00 0,51 0,00 0,00 0,00 0,00 0,00 0,00 89,74. Medie: 0 5,58 0,00 0,34 0,85 0,00 0,00 0,00 0,00 0,00 93,23.
Ieșirea comenzilor de mai sus arată aceste coloane:
CPU
: Numărul procesorului ca număr întreg sau cuvântul all ca medie pentru toți procesoarele.% usr
: Procentul de utilizare a procesorului în timpul rulării aplicațiilor la nivel de utilizator.%Grozav
: La fel ca % usr
, dar cu o prioritate frumoasă.% sys
: Procentul de utilizare a procesorului care a avut loc în timpul executării aplicațiilor kernel. Aceasta nu include timpul petrecut pentru a face față întreruperilor sau manipularea hardware-ului.% iowait
: Procentul de timp când CPU-ul dat (sau tot) a fost inactiv, timp în care a fost programată o operație I / O intensivă în resurse pe acel CPU. O explicație mai detaliată (cu exemple) poate fi găsită Aici.% irq
: Procentul de timp petrecut la întreținerea întreruperilor hardware.%moale
: La fel ca % irq
, dar cu întreruperi software.%fura
: Procentul de timp petrecut în așteptare involuntară (timp furat sau furat) când o mașină virtuală, ca invitat, „câștigă” atenția hipervizorului în timp ce concurează pentru CPU (CPU). Această valoare trebuie păstrată cât mai mică posibil. O valoare ridicată în acest câmp înseamnă că mașina virtuală se blochează - sau în curând va fi.%oaspete
: Procentul de timp petrecut la rularea unui procesor virtual.%inactiv
: procentul de timp în care procesorul (CPU) nu executau nicio activitate. Dacă observați o valoare scăzută în această coloană, aceasta este o indicație a sistemului plasat sub o sarcină grea. În acest caz, va trebui să aruncați o privire mai atentă asupra listei de procese, așa cum vom discuta într-un minut, pentru a determina ce cauzează.Pentru a plasa procesorul sub o sarcină oarecum mare, executați următoarele comenzi și apoi executați mpstat (așa cum este indicat) într-un terminal separat:
# dd if = / dev / zero of = test.iso bs = 1G count = 1. # mpstat -u -P 0 2 3. # ping -f localhost # Întrerupeți cu Ctrl + C după finalizarea mpstat de mai jos. # mpstat -u -P 0 2 3.
În cele din urmă, comparați cu rezultatul mpstat sub circumstante normale:
După cum puteți vedea în imaginea de mai sus, CPU 0 a fost sub o încărcătură grea în timpul primelor două exemple, după cum indică %inactiv
coloană.
În secțiunea următoare vom discuta despre cum să identificăm aceste procese înfometate de resurse, cum să obținem mai multe informații despre ele și cum să luăm măsurile adecvate.
Pentru a lista procesele sortându-le după utilizarea procesorului, vom folosi binecunoscutul ps
comanda cu -eo
(pentru a selecta toate procesele cu format definit de utilizator) și --fel
(pentru a specifica o ordine de sortare personalizată) opțiuni, așa:
# ps -eo pid, ppid, cmd,% cpu,% mem --sort = -% cpu.
Comanda de mai sus va afișa numai fișierul PID
, PPID
, comanda asociată procesului și procentul de utilizare a CPU și RAM sortate după procentul de utilizare a procesorului în ordine descrescătoare. Când este executat în timpul creării .iso fișier, iată primele linii ale rezultatului:
Odată ce am identificat un proces de interes (cum ar fi cel cu PID = 2822
), putem naviga la /proc/PID
(/proc/2822
în acest caz) și faceți o listă de directoare.
Acest director este locul în care sunt păstrate mai multe fișiere și subdirectoare cu informații detaliate despre acest proces în timp ce acesta rulează.
/proc/2822/io
conține statistici IO pentru proces (numărul de caractere și octeți citite și scrise, printre altele, în timpul operațiilor IO)./proc/2822/attr/current
afișează atributele de securitate SELinux actuale ale procesului./proc/2822/cgroup
descrie grupurile de control (pe scurt grupuri) de care aparține procesul dacă este activată opțiunea de configurare a nucleului CONFIG_CGROUPS, pe care o puteți verifica cu:# cat / boot / config - $ (uname -r) | grep -i cgroups.
Dacă opțiunea este activată, ar trebui să vedeți:
CONFIG_CGROUPS = y.
Folosind cgroups
puteți gestiona cantitatea de utilizare permisă a resurselor pe bază de proces, așa cum este explicat în capitolele 1 până la 4 din Red Hat Enterprise Linux 7 Ghid de gestionare a resurselor, în capitolul 9 din ghid de analiză și reglare a sistemului openSUSE, și în Secțiunea Grupuri de control din documentația serverului Ubuntu 14.04.
/proc/2822/fd
este un director care conține o legătură simbolică pentru fiecare descriptor de fișier deschis de proces. Următoarea imagine prezintă aceste informații pentru procesul care a fost început în tty1 (primul terminal) pentru a crea .iso imagine:
Imaginea de mai sus arată că stdin (descriptor de fișiere 0), stdout (descriptor de fișiere 1), și stderr (descriptor de fișiere 2) sunt mapate la /dev/zero, /root/test.iso, și /dev/tty1, respectiv.
Mai multe informații despre /proc
poate fi găsit în „The /proc
document de sistem de fișiere ”păstrat și întreținut de Kernel.org și în Manualul programatorului Linux.
Dacă nu sunteți atent și permiteți oricărui utilizator să ruleze un număr nelimitat de procese, este posibil să vă confruntați în cele din urmă cu o oprire neașteptată a sistemului sau să vă blocați pe măsură ce sistemul intră într-o stare inutilizabilă. Pentru a preveni acest lucru, ar trebui să puneți o limită asupra numărului de procese pe care utilizatorii le pot începe.
Pentru a face acest lucru, editați /etc/security/limits.conf și adăugați următoarea linie în partea de jos a fișierului pentru a seta limita:
* hard nproc 10.
Primul câmp poate fi utilizat pentru a indica fie un utilizator, un grup sau pe toți (*)
, întrucât cel de-al doilea câmp impune o limită dură a numărului de procese (nproc) până la 10. Pentru a aplica modificări, este suficient să vă deconectați și să vă conectați din nou.
Astfel, să vedem ce se întâmplă dacă un anumit utilizator, altul decât root (fie unul legitim, fie nu), încearcă să lanseze o bombă de furcă de tip shell. Dacă nu am fi implementat limite, aceasta ar lansa inițial două instanțe ale unei funcții și apoi le-ar duplica pe fiecare într-o buclă nesfârșită. Astfel, în cele din urmă, ar aduce sistemul dvs. la un crawl.
Cu toate acestea, cu restricția de mai sus în vigoare, bomba furcă nu reușește, dar utilizatorul va rămâne blocat până când administratorul de sistem va ucide procesul asociat cu aceasta:
BACSIS: Alte posibile restricții făcute posibile de ulimit sunt documentate în limitele.conf
fişier.
În plus față de instrumentele discutate anterior, un administrator de sistem poate avea nevoie și de:
A) Modificați prioritatea de execuție (utilizarea resurselor de sistem) a unui proces folosind renice. Aceasta înseamnă că nucleul va aloca mai multe sau mai puține resurse de sistem procesului pe baza priorității atribuite (un număr cunoscut în mod obișnuit ca „frumusețe”Într-un interval de la -20
la 19
).
Cu cât valoarea este mai mică, cu atât este mai mare prioritatea de execuție. Utilizatorii obișnuiți (în afară de root) pot modifica doar frumusețea proceselor pe care le dețin la o valoare mai mare (adică o prioritate de execuție mai mică), în timp ce root poate modifica această valoare pentru orice proces și poate crește sau scădea aceasta.
Sintaxa de bază a renice este următoarea:
# renice [-n]identificator.
Dacă argumentul după noua valoare de prioritate nu este prezent (gol), acesta este setat la PID în mod implicit. În acest caz, frumusețea procesului cu PID = identificator este setat sa .
b) Întrerupeți executarea normală a unui proces atunci când este necesar. Acest lucru este cunoscut sub numele de „Uciderea” procesului. Sub capotă, aceasta înseamnă a trimite procesului un semnal pentru a finaliza corect execuția acestuia și a elibera oricăror resurse utilizate în mod ordonat.
Să ucizi un proces, folosește ucide comandați după cum urmează:
# ucide PID.
Alternativ, puteți utiliza pkill pentru a termina toate procesele a unui proprietar dat (-u)
, sau un proprietar de grup (-G)
, sau chiar acele procese care au un PPID în comun (-P)
. Aceste opțiuni pot fi urmate de reprezentarea numerică sau numele real ca identificator:
# pkill [opțiuni] identificator.
De exemplu,
# pkill -G 1000.
va ucide toate procesele deținute de grup cu GID = 1000.
Și,
# pkill -P 4993
va ucide toate procesele al căror PPID este 4993.
Înainte de a rula un pkill, este o idee bună să testați rezultatele cu pgrep mai întâi, poate folosind -l
opțiune, de asemenea, pentru a lista numele proceselor. Este nevoie de aceleași opțiuni, dar returnează doar PID-urile proceselor (fără a lua nicio altă acțiune) care ar fi ucise dacă pkill este folosit.
# pgrep -l -u gacanepa.
Acest lucru este ilustrat în următoarea imagine:
În acest articol am explorat câteva modalități de a monitoriza utilizarea resurselor pentru a verifica integritatea și disponibilitatea componentelor hardware și software critice într-un sistem Linux.
De asemenea, am învățat cum să luăm măsurile adecvate (fie prin ajustarea priorității de execuție a unui proces dat, fie prin încheierea acestuia) în circumstanțe neobișnuite.
Sperăm că conceptele explicate în acest tutorial au fost utile. Dacă aveți întrebări sau comentarii, nu ezitați să ne contactați folosind formularul de contact de mai jos.