Comenzi Strace pentru depanarea proceselor Linux

Când avem responsabilitatea noastră, avem mașini cu sisteme de operare Linux, una dintre cele mai utile și practice modalități de a gestiona corect fiecare aspect al acestora este cunoașterea diferitelor utilități și comenzi care există pentru a le implementa și a le susține.

De această dată Solvetic va vorbi despre un utilitar de linie de comandă numit strace și vom vedea cum poate deveni practic pentru administrarea sistemului de operare.

Ce este stracestrace este un instrument util pentru linia de comandă pentru diagnosticarea, instruirea și executarea sarcinilor de depanare. Administratorii de sistem găsesc strace un instrument practic pentru rezolvarea problemelor cu programe pentru care sursa nu este disponibilă, deoarece nu trebuie recompilate pentru a le urmări.
Instrumentul strace captează și înregistrează toate apelurile de sistem efectuate de un proces și semnalele primite de proces, strace este responsabil de afișarea numelui fiecărui apel de sistem, împreună cu argumentele sale între paranteze și valoarea de returnare a erorii standard, opțional, va fi posibil să îl redirecționați către un fișier.

1. Instalare Strace


Pentru a instala strace trebuie să executăm una dintre următoarele comenzi:
 sudo apt install strace (Debian sau Ubuntu) yum install strace (RedHat sau CentOS) dnf install strace (Fedora)
În cazul în care un program se blochează sau se comportă într-un mod neașteptat, va fi posibil să accesați apelurile de sistem pentru a vă face o idee despre ce s-a întâmplat exact în timpul execuției sale.

Apelurile de sistem pot fi clasificate în diferite evenimente: cele legate de gestionarea proceselor, cele care iau un fișier ca argument, cele care implică rețele, alocarea memoriei, semnale, IPC și, de asemenea, apelurile de sistem legate de descriptorii de fișiere.

2. Cum se depanează problemele de proces în Linux cu comenzi strace


În continuare vom vedea diferite comenzi strace pentru a rezolva diferitele probleme de proces care pot apărea în Linux.

Urmăriți apelurile de sistem cu straceAceastă opțiune ne permite să urmărim toate apelurile de sistem efectuate de comanda df, pentru aceasta executăm următoarele:

 strace df -h

În această ieșire, putem vedea diferite tipuri de apeluri de sistem efectuate de comanda df, de exemplu, unul dintre ele este:

 open ("/ etc / ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
Unde:
  • Deschis: este tipul de apel de sistem
  • Este argumentul apelului de sistem: „/etc/ld.so.cache”, O_RDONLY | O_CLOEXEC
  • 3: Este valoarea returnată a apelului de sistem

Urmăriți procesele PID LinuxDacă un proces rulează deja pe sistem, va fi posibil să-l urmăriți prin PID-ul său după cum urmează:

 sudo strace -c -p 465
Aceasta va umple ecranul cu ieșirea continuă care arată că apelurile de sistem sunt efectuate de proces, pentru a termina, vom apăsa tastele Ctrl + C.

Obțineți rezumatul unui proces LinuxPrin utilizarea parametrului -c, va fi posibil să se genereze un raport de timp total, apeluri și erori pentru fiecare apel de sistem, pentru aceasta vom executa următoarea sintaxă:

 sudo strace -c -p (PID)

Imprimați indicatorul de instrucțiuni în timpul apelului de sistem. Opțiunea -i afișează indicatorul de instrucțiuni în momentul fiecărui apel de sistem efectuat de program.

 sudo strace -i df -h

Afișați ora din zi pentru fiecare linie de ieșireCu strace este posibil să imprimați ora din zi pentru fiecare linie din ieșirea de urmărire, utilizând semnalul -t:

 sudo strace -t df -h

Afișați timpul de imprimare petrecut la apelurile de sistemPentru a arăta diferența de timp dintre începutul și sfârșitul fiecărui apel de sistem efectuat de un program, trebuie să folosim opțiunea -T:

 sudo strace -T df -h

Urmăriți apeluri specificeComanda trace = write este cunoscută ca o expresie calificată, unde trace este un calificativ (altele includ semnal, abreviere, detaliat, brut, citit sau scris). În acest caz, tastați valoarea calificativului. Următoarea comandă afișează în timp real sistemul apelează pentru a imprima ieșirea df la ieșirea standard:

 sudo strace -e trace = scrie df -h

Câteva comenzi suplimentare pe care le putem folosi sunt:

 sudo strace -e trace = open, close df -hsudo strace -e trace = open, close, read, write df -hsudo strace -e trace = all df -h

Plotează apeluri de sistem pe baza unei condițiiAceastă comandă poate fi utilizată pentru a urmări toate apelurile de sistem care implică gestionarea proceselor, vom executa următoarele:

 sudo strace -q -e trace = procesează df -h

Acum, pentru a urmări toate apelurile de sistem care iau ca argument un nume de fișier, vom rula următoarea comandă:

 sudo strace -q -e trace = fișier df -h

Pentru a urmări toate apelurile de sistem care implică alocarea memoriei, vom executa următoarea linie:

 sudo strace -q -e trace = memory df -h

Redirecționați urmărirea către fișierul de ieșireDacă dorim să scriem într-un fișier mesajele de urmărire trimise către o eroare standard, vom folosi opțiunea -o. Aceasta înseamnă că numai ieșirea comenzii este tipărită pe ecran, după cum urmează:

 sudo strace -o df_debug.txt df -h

Putem vizualiza acest fișier executând linia:

 cat df_debug.txt

Implementați ieșirea de depanare straceDacă dorim să afișăm informațiile de depanare pentru instrumentul strace, trebuie să folosim steagul -d:

 strace -d df -h

Strace ajutorPentru a afișa ajutorul comenzii strace vom executa următoarea linie:

 om strace

Așa am văzut cum strace devine încă un ajutor pentru sarcinile de gestionare din distribuțiile Linux.

wave wave wave wave wave