Linux naredbe

Kako koristiti Strace na Linuxu

Kako koristiti Strace na Linuxu
Kada radite sa Linux sustavima, često ćete trebati pregledati i razumjeti radnje koje izvršavaju procesi i sistemske pozive izvršene njihovim izvršavanjem.

Što se tiče izvođenja takvih zadataka, Linux kernel pruža značajke kao što su ptrace za otklanjanje pogrešaka i dijagnosticiranje procesa.

Ovaj članak raspravlja o tome kako koristiti alat za praćenje za praćenje, nadgledanje i uklanjanje pogrešaka u procesima koji djeluju s jezgrom.

Što su sistemski pozivi?

Prije nego što razgovaramo o tome kako koristiti strace, morate razumjeti što tražimo i kako oni djeluju. To znači da bismo trebali proučiti osnove Linux sistemskih poziva.

Sistemski poziv je programska metoda putem koje program može zatražiti uslugu od jezgre sustava. To je postupak koji ćemo koristiti za inspekciju radnji između korisničkih procesa i Linux jezgre.

Kad god korisnik izvrši program koji čini čitanje, pisanje, ubijanje, izlazak, povezivanje itd., zahtjev, upućuju sistemski poziv. Širok je raspon sistemskih poziva koje programi koriste za obavljanje različitih zadataka kao što su umrežavanje, čitanje i pisanje u datoteke, inicijalizacija i završavanje procesa i još mnogo toga.

Sistemske pozive smatrajte funkcijama - oni se ponašaju slično - jer mogu prihvatiti argumente i vratiti vrijednosti. Glavna razlika između sistemskih poziva i normalnog rada je u tome što sistemski pozivi mogu izravno komunicirati s jezgrom. Sistemski pozivi koriste a mehanizam zamke za navigaciju između korisničkog prostora i kernela.

U Linux sustavu ovaj su mehanizam biblioteke poput Glibca dobro skrivale od korisnika.

BILJEŠKA: Puno je više sistemskih poziva i interakcija jezgre od onoga o čemu smo raspravljali u ovom vodiču. Dodatne informacije potražite na stranicama priručnika.

https: // linkfy.na / syscalls

https: // linkfy.do / trapmanual

Kako instalirati strace na Linux

Iako strace alati nisu unaprijed instalirani u glavnim Linux distribucijama, on je dostupan u većini službenih spremišta tih distribucija; možete ga jednostavno instalirati pomoću zadanih upravitelja paketa.

BILJEŠKA: Iako nećemo opisivati ​​kako instalirati strace na sve sustave, razgovarat ćemo o tome kako to učiniti s glavnim upraviteljima paketa, kao što su apt, dnf, pacman i yum

1: Debian (apt) instalacija

Instalirajte strace pomoću naredbe:

apt-get instalacija strace -y

2: RedHat obitelj (dnf i yum)

Da biste instalirali strace pomoću upravitelja paketa yum, unesite naredbu:

njam instaliraj strace

Za dnf manager paketa unesite naredbu:

dnf instaliraj strace

3: Arch Linux (pacman)

Za korisnike Arch Linuxa, strace možete instalirati naredbom:

pacman -S strace

Sad kad ste instalirali i pokrenuli strace, možemo ići dalje i naučiti kako se koristiti

Osnovna upotreba stracea: Vodič s uputama

Razgovarajmo o osnovnoj upotrebi stracea i shvatimo osnovni izlaz naredbe i kako ga možemo koristiti.

BILJEŠKA: Izlazom stracea poput imena sistemskih poziva, odgovarajućih argumenata i povratnih vrijednosti obrađuje se standardni deskriptor datoteke pogreške (stderr).

Osnovni način upotrebe stracea je pozivanje uslužnog programa strace iza kojeg slijedi naziv programa, čije ponašanje želimo razumjeti.

Evo primjera toga pomoću naredbe ls:

Vau! To je puno rezultata za jednostavnu naredbu kao što je ls.

Iako ne možemo razgovarati o svim rezultatima naredbe strace, možemo destilirati i razumjeti njegovo značenje.

Ako uzmete u obzir prvi redak u gornjem izlazu, primijetit ćete sljedeće značajke.

Dakle, u prvom je retku sistemski poziv execve (izvršava program pomoću navedenog niza argumenata), argumenti sistemskog poziva su (“/ bin / ls”, [“ls”, “/”], 0x7fffc4b277a8 / * 13 vars * /) i povratna vrijednost 0.

https: // linkfy.do / izvršiti

Sistemski pozivi execve izvršavaju binarnu datoteku koju želimo koristiti, u ovom se slučaju nalazi u (/ bin / ls), a niz argumenata je put koji želimo navesti sadržaj.

Također ćete primijetiti oznaku priloženu kosom crtom i zvjezdicom. Za naš primjer:

/ * 13 vars * /

Gornji izlaz pokazuje broj varijabli dodanih kao rezultat poziva. Okolišu unutar funkcije execv pristupa se pomoću vanjske varijable environment definirane kao:

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

Konačni izlaz je povratna vrijednost, koja je u ovom slučaju 0.

Također ćete primijetiti da većina redaka izlaza prati sličan obrazac koji smo gore raspravljali.

Kako pratiti određene sistemske pozive

Iako strace daje puno informacija u vezi s programskim sistemskim pozivima, većina instanci pozvat će vas da filtrirate određene sistemske pozive. Da bismo to učinili, prosljeđujemo zastavicu -e naredbi strace nakon koje slijedi naziv sistemskog poziva koji nam treba.

Kako bi bilo da pogledate sistemske pozive za čitanje za naredbu ls. Na primjer:

strace -e čitati ls

Primijetit ćete da ovo prikazuje samo pročitane sistemske pozive.

Sistemski poziv za čitanje prihvaća tri argumenta: deskriptor datoteke, međuspremnik i broj bajtova. Potom sistemski poziv očitava brojeve bajtova iz prosljeđenog argumenta deskriptora datoteke u međuspremnik.

https: // linkfy.na / readyscall

Sažetak sistemskih poziva

Strace nam također omogućuje sažetak sistemskih poziva upućenih postupkom. Prosljeđivanjem argumenta -c ili -summary-only možemo dobiti izlaz kakav je prikazan u nastavku:

Naredba filtrira i raspoređuje izlaz učinkovitije od uobičajenog strace izlaza. Da biste dobili i sažetak i normalan izlaz stracea, dodajte argument -C.

Kako koristiti Strace s tekućim procesima

U drugim slučajevima trebat će vam trag pokrenutog postupka. Do ovog trenutka koristili smo samo jednu naredbu strace. Da bismo pratili pokrenut postupak, možemo upotrijebiti argument -p nakon kojeg slijedi proces ID procesa (PID) da bismo mu pridružili strace.

PID tekućeg postupka možete dobiti pomoću vrha i grep, ps, htop, pidof ili drugih alata za nadzor sustava.

Na primjer, da bismo dobili PID procesa apache, možemo koristiti:

ps -os | grep -i apache2

To bi vam trebalo dati PID postupka apache2 (u ovom slučaju PID 3514), a mi ga možemo koristiti za pričvršćivanje na strace.

To bi trebalo prikazati izlaz sličan onome prikazanom u nastavku.

Strace će kontinuirano pratiti pridruženi proces i prikazivati ​​izlaz dok pridruženi proces izvršava sistemske pozive. Da biste prekinuli trag, pritisnite CTRL + C, čime se postupak odvaja od sloja.

Kako spremiti izlaz Strace u datoteke

Izlaz stracea također možemo preusmjeriti u datoteku kao argument. Koristeći zastavicu -o praćenu stazom datoteke kao argument, možemo spremiti zapise stracea.

Na primjer:

strace -p 3514 -o ~ / Desktop / apache_trace

Nakon što je datoteka spremljena, kasnije je možete nadgledati i analizirati.

Zaključak

U ovom smo vodiču naučili kako instalirati i koristiti strace na glavnim Linux distribucijama. Sada kada razumijete sistemske pozive i kako procesi rade, možete koristiti strace za nadgledanje i uklanjanje pogrešaka pokrenutog sistemskog procesa.

Koncepti naučeni u ovom vodiču vrlo su korisni, uglavnom zato što ono što ste naučili možete koristiti za praćenje ako netko petlja u sistemske procese.

Besplatni i otvoreni kodni pokretački programi za razvoj Linux igara
Ovaj će članak pokriti popis besplatnih i open source pokretačkih igara koje se mogu koristiti za razvoj 2D i 3D igara na Linuxu. Brojni su takvi moto...
Vodič za Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider dvanaesti je dodatak seriji Tomb Raider - franšizi u akcijsko-avanturističkoj igri koju je stvorio Eidos Montreal. I kritiča...
Kako pojačati FPS u Linuxu?
FPS je kratica Okviri u sekundi. Zadatak FPS-a je mjerenje broja sličica u reprodukcijama video zapisa ili igranim izvedbama. Jednostavnim riječima, b...