Cum se utilizează Strace pentru a monitoriza apelurile sistemului Linux

Jun 23, 2025
Linux
FatmAwati Achmad Zaenuri / Shutterstock.com

Programele Linux solicită nucleu să facă niște lucruri pentru ei. În Strace Comanda dezvăluie aceste apeluri de sistem. Le puteți folosi pentru a înțelege modul în care funcționează programele și de ce, uneori, ei nu.

Kernel-ul și apelurile de sistem

La fel de inteligenți cum ar putea fi, programele de calculator nu pot face totul pentru ei înșiși. Ei trebuie să facă cereri de a avea anumite funcții efectuate pentru ei. Aceste cereri merg la kernelul Linux. În mod obișnuit, există o bibliotecă sau altă interfață software pe care programul îl solicită, iar biblioteca face apoi solicitarea corespunzătoare - numită un apel de sistem - la kernel.

Fiind capabil să vadă sistemul de apeluri pe care un program a făcut-o și ce răspunsuri vă pot ajuta să înțelegeți funcționarea interioară a programelor care vă interesează sau pe care le-ați scris. Aceasta este ce Strace face . Acesta poate ajuta la depanarea problemelor și căutați blocaje.

Acest lucru nu este același cu depanarea unei cereri cu un instrument ca GDB. . Un program de depanare vă permite să investigați funcționarea internă a unui program așa cum funcționează. Vă permite să treceți prin logica programului dvs. și să inspectați memoria și valorile variabile. Prin comparație, ce Strace Are captarea informațiilor despre apelurile sistemului pe măsură ce programul funcționează. Când programul trasat se termină, Strace Afișează informațiile despre apelurile sistemului în fereastra Terminalului.

Apelurile de sistem oferă tot felul de funcționalitate la nivel scăzut, cum ar fi acțiunile de citire și scriere pe fișiere, uciderea proceselor și așa mai departe. Există o listă de sute de apeluri de sistem pe SYSCALLS MAN Pagina .

LEGATE DE: Debuging cu GDB: Începeți

Instalarea Fragmentului

Dacă Strace Nu este deja instalat pe computer, îl puteți instala foarte ușor.

Pe Ubuntu, utilizați această comandă:

 sudo apt instalați strace 

Pe Fedora, tastați această comandă:

 Sudo DNF instalați Strace 

Pe Manjaro, comanda este:

 sudo Pacman -sy Strace 

Primii pași cu Strace

Vom folosi un mic program pentru a demonstra Strace . Nu face prea mult: deschide un fișier și scrie o linie de text la ea și nu are nici o eroare de verificare în ea. Este doar un hack rapid, astfel încât să avem ceva de utilizat Strace .

 #include & lt; stdio.h & gt;

int principal (int argc, char argv []) {

  // mânerul fișierului
  Fișier * Filegeek;

  // Deschideți un fișier numit "Strace_demo.txt", sau creați-l
  Filegeek = Fopen ("Strace_demo.txt", "W");

  // scrieți un text în fișier
  FPRINTF (Filegeek, scrieți acest fișier ");

  // Închideți fișierul
  FLOSE (FILEGEEK);

  // Exit din program
  retur (0);

} // Sfârșitul principal 

Am salvat acest lucru într-un fișier numit "File-io.c" și am compilat-o GCC. într-un executabil numit Stex. , numit pentru " Sf rasă ex amplu."

 GCC -O STEX FILE-IO.C 

Vom suna Strace Din linia de comandă și trece numele noului nostru executabil la acesta ca proces pe care vrem să-l urmăresc. Am putea să urmărim la fel de ușor oricare dintre comenzile Linux sau orice alt executabil binar. Folosim programul nostru mic din două motive.

Primul motiv este acela Strace este verbose. Pot exista o mulțime de ieșire. Asta e minunat când utilizați Strace În mânie, dar poate fi copleșitor la început. Există limitată Strace ieșire pentru programul nostru mic. Al doilea motiv este că programul nostru are o funcționalitate limitată, iar codul sursă este scurt și simplu. Acest lucru facilitează identificarea care secțiuni ale producției se referă la diferitele părți ale funcționării interne ale programului.

 Strace ./stex

Putem vedea clar scrie Apelul sistemului Trimiterea textului "Scrieți acest fișier" în fișierul nostru deschis și EXIT_GROUP. Apel de sistem. Aceasta termină toate firele din aplicație și trimite o valoare returnată înapoi la coajă.

Filtrarea ieșirii

Chiar și cu programul nostru simplu demonstrativ, există o mulțime de ieșire. Putem folosi -E. (expresie). Vom trece în numele sunării sistemului pe care vrem să-l vedem.

 Strace -e Scrieți ./stex

Puteți raporta mai multe apeluri de sistem adăugându-le ca o listă separată prin virgulă. Nu includeți niciun spațiu alb în lista de apeluri de sistem.

 strace -e close, scrie ./stex

Trimiterea ieșirii într-un fișier

Beneficiul de filtrare a ieșirii este, de asemenea, problema cu filtrarea ieșirii. Vedeți ce ați cerut să vedeți, dar nu vedeți nimic altceva. Și unele dintre celelalte rezultate ar putea fi mai utile pentru tine decât lucrurile pe care le-ați cerut să le vedeți.

Uneori, este mai convenabil să capturați totul și să căutați și să parcurgeți întregul set de rezultate. În acest fel, nu veți exclude accidental ceva important. În -O. (Output) vă permite să trimiteți ieșirea de la Strace sesiune la un fișier text.

 strace -o trace-ieșire.txt ./stex

Apoi puteți folosește Mai puțin comanda Pentru a derula prin listarea și căutarea apelurilor de sistem - sau orice altceva-numitor.

 mai puțin trace-ieșire.txt 

Acum puteți folosi toate Mai puțin Capabilitățile de căutare pentru a investiga ieșirea.

LEGATE DE: Cum să utilizați comanda mai mică pe Linux

Adăugarea de marcaje

Puteți adăuga mai multe tipuri de timpi diferite la ieșire. În -R. (Opțiunea relativă TimestaMPS) adaugă marcaje de timp care prezintă diferența de timp între începutul fiecărui apel succesiv al sistemului. Rețineți că aceste valori de timp vor include timpul petrecut în apelul anterior al sistemului și orice altceva pe care programul a făcut programul înainte de următorul apel de sistem.

 Strace -r ./stex

Timestele sunt afișate la începutul fiecărei linii de ieșire.

Pentru a vedea durata de timp petrecută în fiecare apel de sistem, utilizați -T. (Syscall-Times). Aceasta arată durata timpului petrecut în fiecare apel de sistem.

 strace -t ./stex

Durata de timp sunt prezentate la sfârșitul fiecărei linii de apeluri de sistem.

Pentru a vedea timpul la care a fost apelat fiecare apel de sistem, utilizați -ttt. (Absolut TimestaMPS). Aceasta arată ora "ceasului de perete", cu o rezoluție microsecundă.

 Strace -tt ./stex

Timpurile sunt afișate la începutul fiecărei linii.

Traducerea unui proces de funcționare

Dacă procesul pe care doriți să îl urmăriți deja funcționează, puteți atașa Strace la ea. Pentru a face acest lucru, trebuie să cunoașteți ID-ul procesului. Poti utilizare ps. cu grep. pentru a găsi acest lucru. Avem Firefox care rulează. Pentru a afla ID-ul Firefox. Proces, putem folosi ps. și o conductă grep. .

 PS-E | GREP Firefox 

Putem vedea că ID-ul procesului este 8483. Vom folosi -p. (ID-ul procesului) de a spune Strace care proces de atașare. Rețineți că va trebui să utilizați sudo. :

 sudo strace -p 8483 

Veți vedea o notificare că Strace sa atașat la proces, iar apoi apelurile de urmărire a sistemului vor fi afișate în fereastra terminalului ca de obicei.

Crearea unui raport

În -C. (numai pentru rezumat) Cauze de opțiune Strace pentru a imprima un raport. Acesta generează un tabel pentru informații despre apelurile de sistem care au fost efectuate de programul urmărit.

 Strace-C ./stex

Coloanele sunt:

  • % Timp : Procentul de timp de execuție care a fost petrecut în fiecare apel de sistem.
  • secunde : Timpul total exprimat în câteva secunde și microsecundele petrecute în fiecare apel de sistem.
  • USECS / CALL. : Timpul mediu în microsecundele petrecut în fiecare apel de sistem.
  • Apeluri : De câte ori a fost executat fiecare apel de sistem.
  • erori : Numărul de eșecuri pentru fiecare apel de sistem.
  • SYSCALL. : Numele apelului de sistem.

Aceste valori vor afișa zerouri pentru programe triviale care execută și se termină rapid. Valorile lumii reale sunt afișate pentru programe care fac ceva mai semnificativ decât cererea noastră demonstrativă.

Profund perspective, ușor

În Strace Ieșirea vă poate arăta ce apeluri de sistem sunt făcute, care se fac în mod repetat și cât de mult timp de execuție este petrecut în codul lateral al kernelului. Sunt informații minunate. Adesea, când încercați să înțelegeți ce se întâmplă în interiorul codului dvs., este ușor să uitați că binarul dvs. interacționează aproape non-stop cu kernelul pentru a-și îndeplini multe funcții.

Prin utilizarea Strace , vedeți imaginea completă.


Linux - Cele mai populare articole

Cum se configurează sau Disable Linux Mint Actualizare Notificări

Linux Jul 9, 2025

Avea suficiente notificări de actualizare enervante ale lui Linux Monet? Sau poate că sunteți atât de preocupat de a rămâne la curent cu care doriți să le vedeți și mai mult? Ori..


Cele mai bune laptopuri Linux din 2021 pentru dezvoltatori și entuziaști

Linux Sep 27, 2025

Tomeqs / Shutterstock.com. Ce să căutați într-un laptop Linux în 2021 Puteți cumpăra aproape orice laptop și Instalați linux pe ea ..


Se pare Linux 30: Cum un hobby proiect Cucerit lume

Linux Sep 17, 2025

Larry Ewing și Gimp Pe 17 septembrie 1991 , Linus Torvalds a lansat pentru prima dată kernel Linux (versiunea 0.01). Iată o scurtă privire la mo..


Ce este nou în GNOME 41?

Linux Sep 16, 2025

Linux Desktop Mediu Gnome. 41 a fost lansat pe 22 septembrie 2021. Venirea fierbinte pe călcâiul lui Gnome 40, schimbarea fluxului de lucru schimbării, Gnome 41 dă ceva de..


Ce este nou în kernelul Linux 5.14

Linux Sep 9, 2025

Sean Locke Fotografie / Shutterstock Pe măsură ce Linux devine 30 de ani, kernelul 5.14 a fost lansat. Acesta conține oferta obișnuită largă de corecții..


Care sunt dezavantajele de trecere la Linux?

Linux Oct 27, 2025

Larry Ewing și Gimp Linux Evangheliștii (ca mine) sunt rapizi să subliniez numeroasele beneficii ale trecerii de la Windows și MacOS. Dar nici un sistem ..


Cum să rulați aplicații Android pe Linux

Linux Oct 19, 2025

Quietbits / Shutterstock.com. V-ați dorit vreodată să rulați o aplicație Android pe Linux, dar nu a vrut să se confrunte cu punți de depanare, medii de ..


10 Exemple utile ale comenzii Linux RSYNC

Linux Oct 24, 2025

Linux rsync Comanda este un instrument puternic de copiere a fișierelor și de sincronizare a folderului. Iată zece cazuri de utilizare comune pe care le veți putea folosi bine pe..


Categorii