Linux-kommandoer

Slik bruker du Strace på Linux

Slik bruker du Strace på Linux
Når du arbeider med Linux-systemer, må du ofte inspisere og forstå handlingene som utføres av prosesser og systemanropene som utføres av deres utførelse.

Når det gjelder å utføre slike oppgaver, gir Linux-kjernen funksjoner som ptrace å feilsøke og diagnostisere prosesser.

Denne artikkelen diskuterer hvordan du bruker streakeverktøyet til å spore, overvåke og feilsøke prosesser som samhandler med kjernen.

Hva er systemanrop?

Før vi diskuterer hvordan du bruker strace, må du forstå hva vi leter etter og hvordan de fungerer. Det betyr at vi burde gå gjennom det grunnleggende om Linux-systemanrop.

En systemanrop er en programmatisk metode som et program kan be om en tjeneste fra systemets kjerne. Det er prosessen vi vil bruke til å inspisere handlingene mellom brukerprosesser og Linux-kjernen.

Når som helst en bruker utfører et program som gjør det mulig å lese, skrive, drepe, avslutte, binde osv., de ber om et systemanrop. Det er et bredt spekter av systemanrop som brukes av programmer for å utføre forskjellige oppgaver som nettverk, lese og skrive til filer, initialisere og avslutte prosesser og mye mer.

Tenk på systemanrop som funksjoner - de oppfører seg likt - fordi de kan godta argumenter og returnere verdier. Hovedforskjellen mellom systemanrop og normal drift er at systemanrop kan samhandle direkte med kjernen. Systemanrop bruker en felle mekanisme for å navigere mellom brukerområdet og kjernen.

I Linux-systemet er denne mekanismen godt skjult for brukerne av biblioteker som Glibc.

MERK: Det er mye mer med systemanrop og kjerneinteraksjoner enn det vi har diskutert i denne opplæringen. Se manualsidene for mer informasjon.

https: // linkfy.til / syscalls

https: // linkfy.til / trapmanual

Slik installerer du strace på Linux

Selv om stace-verktøy ikke er forhåndsinstallert som standard i store Linux-distribusjoner, er det tilgjengelig i de fleste offisielle repositorier av disse distribusjonene; du kan enkelt installere det ved hjelp av standard pakkeforvaltere.

MERK: Selv om vi ikke vil dekke hvordan du installerer strace på alle systemer, vil vi diskutere hvordan du gjør det med store pakkeforvaltere som apt, dnf, pacman og yum

1: Debian (apt) Installasjon

Installer strace ved hjelp av kommandoen:

apt-get install strace -y

2: RedHat Family (dnf og yum)

For å installere strace ved hjelp av yum package manager, skriv inn kommandoen:

yum install strace

For dnf pakkebehandling, skriv inn kommandoen:

dnf installere strace

3: Arch Linux (pacman)

For Arch Linux-brukere kan du installere strace med kommandoen:

pacman -S strace

Nå som du har installert og kjører, kan vi gå videre og lære hvordan du bruker

Basic Strace Usage: En veiledning

La oss diskutere grunnleggende strace-bruk og forstå den grunnleggende utgangen av kommandoen og hvordan vi kan bruke den.

MERK: Strace-utdata som systemanropsnavn, tilsvarende argumenter og returverdier blir håndtert av standard feilfilbeskrivelse (stderr).

Den grunnleggende måten å bruke strace på er å ringe strace-verktøyet etterfulgt av programmets navn, hvis oppførsel vi ønsker å forstå.

Her er et eksempel på det ved hjelp av kommandoen ls:

Wow! Det er mye output for en enkel kommando som ls.

Selv om vi ikke kan diskutere all produksjonen fra strekekommandoen, kan vi destillere og forstå dens betydning.

Hvis du vurderer den første linjen i utgangen ovenfor, vil du legge merke til følgende funksjoner.

Derfor, i første linje, blir systemanropet utført (utfør program ved hjelp av den angitte matrisen av argumenter), argumentene til systemanropet er (“/ bin / ls”, [“ls”, “/”], 0x7fffc4b277a8 / * 13 vars * /) og en returverdi på 0.

https: // linkfy.å / utføre

Utfør systemanropene utfør binæren vi vil bruke, i dette tilfellet plassert i (/ bin / ls), og matrisen av argumenter er banen vi vil vise innholdet.

Du vil også legge merke til en notasjon vedlagt en skråstrek og en stjerne. For vårt eksempel:

/ * 13 vars * /

Ovennevnte utgang indikerer antall variabler som er lagt til som et resultat av å ringe prosessen. Miljøet i execv-funksjonen er tilgjengelig ved å bruke den eksterne miljøvariabelen definert som:

int main (int argc, char * argv [], char * envp [])

Den endelige utgangen er returverdien, som i dette tilfellet er 0.

Du vil også legge merke til at de fleste linjer i strace-utgangen følger et lignende mønster vi diskuterte ovenfor.

Hvordan spore spesifikke systemanrop

Selv om strace gir mye informasjon om systemanrop til programmer, vil de fleste tilfeller ber deg om å filtrere spesifikke systemanrop. For å gjøre dette, sender vi flagget -e til strekningskommandoen etterfulgt av navnet på systemanropet vi trenger.

Hva med å se på det leste systemet krever ls-kommandoen. For eksempel:

strace -e lese ls

Du vil merke at dette bare viser bare leste systemanrop.

Den leste systemanropet godtar tre argumenter: filbeskrivelse, buffer og antall byte. Systemanropet leser deretter opp til antall byte fra det sendte filbeskrivelsesargumentet til bufferen.

https: // linkfy.til / readyscall

Sammendrag av systemanrop

Strace lar oss også få et sammendrag av systemanrop foretatt av en prosess. Ved å sende argumentet -c eller -summary-only, kan vi få en utgang som den som er vist nedenfor:

Kommandoen filtrerer og ordner utdataene mer effektivt enn den normale strace-utgangen. For å få både sammendrag og normal streameutdata, send argumentet -C.

Hvordan bruke Strace med løpende prosesser

Andre ganger vil du trenge et spor av en løpende prosess. Fram til dette punktet har vi bare brukt strace en enkelt kommando. For å spore en kjørende prosess, kan vi bruke argumentet -p etterfulgt av prosess-ID (PID) -prosessen for å knytte strek til det.

Du kan få PID-en for en kjørende prosess ved å bruke topp- og grep-, ps-, htop-, pidof- eller andre systemovervåkingsverktøy.

For eksempel, for å få PID for apache-prosessen, kan vi bruke:

ps -ax | grep -i apache2

Det skal gi deg PID for apache2-prosessen (PID 3514 i dette tilfellet), og vi kan bruke den til å feste den for å spore.

Det skal vise en utgang som ligner på den som er vist nedenfor.

Strace vil kontinuerlig spore den vedlagte prosessen og vise utdata når den vedlagte prosessen utfører systemanrop. For å avslutte sporingen, trykk CTRL + C, som løsner prosessen fra strekningen.

Hvordan lagre Strace-utdata i filer

Vi kan også omdirigere utdataene fra strace til en fil som et argument. Ved å bruke -o-flagget etterfulgt av filbanen som et argument, kan vi lagre sporlogger.

For eksempel:

strace -p 3514 -o ~ / Desktop / apache_trace

Når filen er lagret, kan du senere overvåke og analysere den.

Konklusjon

I denne guiden lærte vi hvordan du installerer og bruker strace på Major Linux-distribusjoner. Nå som du forstår systemanrop og hvordan prosesser fungerer, kan du bruke strace til å overvåke og feilsøke en kjørende systemprosess som kjører.

Konseptene som er lært i denne opplæringen er veldig nyttige, hovedsakelig fordi du kan bruke det du har lært til å overvåke hvis noen tukler med systemprosesser.

Slik installerer du League Of Legends på Ubuntu 14.04
Hvis du er fan av League of Legends, er dette en mulighet for deg å prøvekjør League of Legends. Merk at LOL støttes på PlayOnLinux hvis du er en linu...
Installer det siste OpenRA-strategispillet på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spillmotor som gjenskaper de tidlige Westwood-spillene som den klassiske Command & Conquer: Red Alert. Di...
Installer nyeste Dolphin Emulator for Gamecube & Wii på Linux
Dolphin Emulator lar deg spille de valgte Gamecube- og Wii-spillene dine på Linux Personal Computers (PC). Som en fritt tilgjengelig og åpen kildekod...