Strace -kommandoer til fejlfinding af Linux -processer

Når vi under vores ansvar har maskiner med Linux -operativsystemer, er en af ​​de mest nyttige og praktiske måder at styre hvert aspekt af disse korrekt at kende de forskellige hjælpeprogrammer og kommandoer, der findes for at implementere og understøtte dem.

Denne gang vil Solvetic tale om et kommandolinjeværktøj kaldet strace, og vi vil se, hvordan det kan blive praktisk til operativsystemadministration.

Hvad er stracestrace er et nyttigt kommandolinjeværktøj til diagnosticering, instruktion og kørsel af fejlfindingsopgaver. Systemadministratorer finder strace et praktisk værktøj til at løse problemer med programmer, som kilden ikke er tilgængelig for, da de ikke skal genkompileres for at spore dem.
Strace -værktøjet indfanger og registrerer alle systemopkald foretaget af en proces og de signaler, der modtages af processen, strace har ansvaret for at vise navnet på hvert systemopkald sammen med dets argumenter i parentes og dens returværdi til standardfejl, eventuelt det vil være muligt at omdirigere det til en fil.

1. Strace installation


For at installere strace skal vi udføre en af ​​følgende kommandoer:
 sudo apt installere strace (Debian eller Ubuntu) yum installere strace (RedHat eller CentOS) dnf installere strace (Fedora)
Hvis et program går ned eller opfører sig på en uventet måde, vil det være muligt at få adgang til systemopkaldene for at få en idé om, hvad der præcist skete under dets udførelse.

Systemopkald kan kategoriseres i forskellige hændelser: dem, der er relateret til processtyring, dem, der tager en fil som et argument, dem, der involverer netværk, hukommelsestildeling, signaler, IPC og også systemopkald relateret til filbeskrivelser.

2. Sådan fejlfindes procesproblemer i Linux med strace -kommandoer


Dernæst vil vi se forskellige strace -kommandoer for at løse de forskellige procesproblemer, der kan opstå i Linux.

Spor systemopkald med straceDenne mulighed giver os mulighed for at spore alle systemopkald foretaget af kommandoen df, for dette udfører vi følgende:

 strace df -h

I denne output kan vi se forskellige typer systemopkald foretaget af kommandoen df, for eksempel er en af ​​dem:

 open (" / etc / ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
Hvor:
  • Åben: Det er typen af ​​systemopkald
  • Det er argumentet for systemopkaldet: "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC
  • 3: Det er returværdien af ​​systemopkaldet

Spor Linux PID -processerHvis en proces allerede kører på systemet, vil det være muligt at spore det gennem dets PID som følger:

 sudo strace -c -p 465
Dette vil fylde skærmen med det kontinuerlige output, der viser, at systemopkaldene foretages af processen, for at afslutte trykker vi på Ctrl + C -tasterne.

Få en oversigt over en Linux -procesVed at bruge parameteren -c vil det være muligt at generere en rapport om samlet tid, opkald og fejl for hvert systemopkald, for dette vil vi udføre følgende syntaks:

 sudo strace -c -p (PID)

Udskriv instruktionsmarkøren under systemopkald. Indstillingen -i viser instruktionsmarkøren på tidspunktet for hvert systemopkald foretaget af programmet.

 sudo strace -i df -h

Vis tidspunkt på dagen for hver sporoutputlinjeMed strace er det muligt at udskrive tidspunktet på dagen for hver linje i sporoutput ved hjælp af -t -flag:

 sudo strace -t df -h

Vis udskrivningstid brugt på systemopkaldFor at vise tidsforskellen mellem begyndelsen og slutningen af ​​hvert systemopkald foretaget af et program, skal vi bruge indstillingen -T:

 sudo strace -T df -h

Spor specifikke opkaldKommandoen trace = write er kendt som et kvalificeret udtryk, hvor trace er en kvalifikator (andre inkluderer signal, forkortelse, verbose, raw, read eller write) .I dette tilfælde skriver du værdien af ​​kvalifikatoren. Følgende kommando viser i realtid, at systemet kalder for at udskrive df -output til standardoutput:

 sudo strace -e trace = skriv df -h

Nogle yderligere kommandoer, som vi kan bruge, er:

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

Plot systemopkald baseret på en betingelseDenne kommando kan bruges til at spore alle systemopkald, der involverer processtyring, vi udfører følgende:

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

For at spore alle systemopkald, der tager et filnavn som et argument, kører vi følgende kommando:

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

For at spore alle systemopkald, der involverer hukommelsestildeling, vil vi udføre følgende linje:

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

Omdiriger spor til outputfilHvis vi vil skrive opfølgende beskeder sendt til en standardfejl til en fil, vil vi bruge indstillingen -o. Dette betyder, at kun kommandoudgangen udskrives på skærmen som følger:

 sudo strace -o df_debug.txt df -h

Vi kan visualisere denne fil ved at udføre linjen:

 kat df_debug.txt

Implementér strace -fejlfindingsoutputHvis vi vil vise fejlfindingsoplysningerne for strace -værktøjet, skal vi bruge -d -flag:

 strace -d df -h

Strace hjælpFor at vise hjælp til kommandoen strace udfører vi følgende linje:

 mand strace

Sådan har vi set, hvordan strace bliver endnu en hjælp til styringsopgaver i Linux -distroer.

wave wave wave wave wave