Når det gjelder å utføre slike oppgaver, gir Linux -kjernen funksjoner som PTRACE for å feilsøke og diagnostisere prosesser.
Denne artikkelen diskuterer hvordan du bruker Strace Tool for å 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 bør gå over det grunnleggende i Linux -systemanropene.
En systemanrop er en programmatisk metode som et program kan be om en tjeneste fra systemets kjerne. Det er prosessen vi vil bruke for å inspisere handlingene mellom brukerprosesser og Linux -kjernen.
Når som helst en bruker utfører et program som lager en lesing, skriver, dreper, går ut, binder osv., forespørsel, de ringer en 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 lignende fordi de kan akseptere argumenter og returnere verdier. Hovedforskjellen mellom systemanrop og normal drift er at systemanrop direkte kan samhandle med kjernen. Systemanrop Bruk en fellemekanisme 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. Vennligst referer til de manuelle sidene for mer informasjon.
https: // linkfy.til/syscalls
https: // linkfy.til/trapmanual
Hvordan installere Strace på Linux
Selv om Strace-verktøy ikke kommer forhåndsinstallert som standard i større Linux-distribusjoner, er det tilgjengelig i de fleste offisielle depoter av disse distribusjonene; Du kan installere det enkelt ved å bruke standardpakkeledere.
MERK: Selv om vi ikke vil dekke hvordan du installerer Strace på alle systemer, vil vi diskutere hvordan du gjør det med store pakkeledere 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 installer Strace
For DNF -pakkebehandler, skriv inn kommandoen:
DNF installer 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 å bruke
Basic Strace Bruk: En how-to-guide
La oss diskutere grunnleggende bruksbruk og forstå den grunnleggende utgangen til kommandoen og hvordan vi kan bruke den.
MERK: Strace output som systemanrop navn, tilsvarende argumenter og returverdier blir håndtert av standard feilfilbeskrivelsen (STDERR).
Den grunnleggende måten å bruke Strace på er ved å kalle Strace -verktøyet etterfulgt av programmets navn, hvis oppførsel vi ønsker å forstå.
Her er et eksempel på det ved å bruke LS -kommandoen:
Wow! Det er mye output for en enkel kommando som LS.
Selv om vi ikke kan diskutere all output fra Strace -kommandoen, kan vi destillere og forstå dens betydning.
Hvis du vurderer den første linjen i utdataene ovenfor, vil du legge merke til følgende funksjoner.
I den første linjen er systemanropet Execve (Execute -programmet ved hjelp av den spesifiserte rekke argumenter), argumentene til systemanropet er (“/bin/ls”, [“ls”, “/”], 0x7fffc4b277a8/ * 13 vars */) og en returverdi på 0.
https: // linkfy.å/utføre
Execve -systemet ringer utfører det binære vi ønsker å bruke, i dette tilfellet, som ligger i (/bin/ls) og utvalget av argumenter er banen vi ønsker å liste innholdet.
Du vil også legge merke til en notasjon vedlagt en fremover skråstrek og en stjerne. For vårt eksempel:
/ * 13 vars */
Ovennevnte utgang indikerer antall variabler lagt til som et resultat av å ringe prosessen. Miljøet i EXECV -funksjonen får tilgang til ved å bruke Environ External Variable definert som:
int main (int argc, char *argv [], char *envp [])
Den endelige utgangen er returverdien, som er 0 i dette tilfellet.
Du vil også merke 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 angående programsanrop, vil de fleste forekomster be deg om å filtrere spesifikke systemanrop. For å gjøre dette, passerer vi -e -flagget til Strace -kommandoen etterfulgt av navnet på systemanropet vi trenger.
Hva med å se på lesesystemet krever LS -kommandoen. For eksempel:
Strace -e Les LS
Du vil legge merke til at dette bare viser bare leste systemanrop.
Lesesystemanropet godtar tre argumenter: filbeskrivende, buffer og antall byte. Systemanropet leser deretter opp til grevbyte fra det vedtatte filbeskrivelsesargumentet inn i bufferen.
https: // linkfy.til/readsyscall
Sammendrag av systemanrop
Strace lar oss også få et sammendrag av systemanropene som er laget av en prosess. Ved å passere -c eller -summary -bare argumentet, kan vi få en utdata som den som er vist nedenfor:
Kommandoen filtrerer og ordner utgangen mer effektivt enn den normale Strace -utgangen. For å få både sammendrag og normal strace output, pass -c -argumentet.
Hvordan bruke Strace med løpeprosesser
Andre ganger trenger du et spor av en løpsprosess. Frem til dette punktet har vi bare brukt Strace en enkelt kommando. For å spore en løpsprosess, kan vi bruke -p -argumentet etterfulgt av prosess -ID (PID) -prosessen for å knytte Strace til den.
Du kan få PID i en løpsprosess ved å bruke topp- og grep, PS, HTOP, PIDOF eller andre systemovervåkningsverktøy.
For å få PID i Apache -prosessen kan vi for eksempel bruke:
PS -AX | grep -i apache2
Det skal gi deg PID i Apache2 -prosessen (PID 3514 i dette tilfellet), og vi kan bruke den til å knytte den til å strake.
Som skal vise en utgang som ligner 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 sporet, trykk CTRL + C, som løsner prosessen fra Strace.
Hvordan lagre Strace -utgangen på filer
Vi kan også omdirigere utdataene fra Strace til en fil som et argument. Ved å bruke -o -flagget etterfulgt av filstien som et argument, kan vi lagre Strace -logger.
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 å installere og bruke Strace på større 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 læres i denne opplæringen er veldig nyttige, hovedsakelig fordi du kan bruke det du har lært å overvåke hvis noen tukler med systemprosesser.