Ukazi za Linux

Kako uporabljati Strace v Linuxu

Kako uporabljati Strace v Linuxu
Pri delu s sistemi Linux boste pogosto morali pregledati in razumeti dejanja, ki jih izvajajo procesi, in sistemske klice, izvedene z njihovim izvajanjem.

Ko gre za izvajanje takšnih nalog, jedro Linuxa ponuja funkcije, kot so ptrace za odpravljanje napak in diagnosticiranje procesov.

Ta članek razpravlja o uporabi orodja strace za sledenje, spremljanje in odpravljanje napak v procesih, ki delujejo z jedrom.

Kaj so sistemski klici?

Preden se pogovorimo o uporabi stracea, morate razumeti, kaj iščemo in kako delujejo. To pomeni, da bi morali preučiti osnove sistemskih klicev Linux.

Sistemski klic je programska metoda, s pomočjo katere lahko program od jedra sistema zahteva storitev. To je postopek, s katerim bomo pregledali dejanja med uporabniškimi procesi in jedrom Linuxa.

Kadar koli uporabnik zažene program, ki naredi branje, pisanje, ubijanje, izhod, vezanje itd., zahtevajo sistemski klic. Obstaja široka paleta sistemskih klicev, ki jih programi uporabljajo za izvajanje različnih nalog, kot so mreženje, branje in pisanje v datoteke, inicializacija in zaključevanje procesov in še veliko več.

Sistemske klice si predstavljajte kot funkcije - obnašajo se podobno - ker lahko sprejemajo argumente in vrnejo vrednosti. Glavna razlika med sistemskimi klici in običajnim delovanjem je, da lahko sistemski klici neposredno delujejo z jedrom. Sistemski klici uporabljajo a mehanizem pasti za krmarjenje med uporabniškim prostorom in jedrom.

V sistemu Linux ta mehanizem knjižnicam, kot je Glibc, pred uporabniki dobro skriva.

OPOMBA: Sistemski klici in interakcije med jedrom imajo veliko več kot tisto, o čemer smo razpravljali v tej vadnici. Za več informacij glejte strani z navodili.

https: // linkfy.na / syscalls

https: // linkfy.do / trapmanual

Kako namestiti strace na Linux

Čeprav orodja strace privzeto niso vnaprej nameščena v večjih distribucijah Linuxa, so na voljo v večini uradnih skladišč teh distribucij; lahko ga enostavno namestite z uporabo privzetih upraviteljev paketov.

OPOMBA: Čeprav ne bomo pokrivali, kako namestiti strace na vse sisteme, se bomo o tem pogovorili z glavnimi skrbniki paketov, kot so apt, dnf, pacman in yum

1: Namestitev Debian (apt)

Namestite strace z ukazom:

apt-get namestite strace -y

2: Družina RedHat (dnf in yum)

Če želite namestiti strace z upraviteljem paketov yum, vnesite ukaz:

yum namestite strace

Za upravitelja paketov dnf vnesite ukaz:

dnf namestite strace

3: Arch Linux (pacman)

Za uporabnike Arch Linuxa lahko namestite strace z ukazom:

pacman -S strace

Zdaj, ko imate strace nameščen in zagnan, lahko nadaljujemo in se naučimo uporabljati

Osnovna uporaba strace: Navodila za uporabo

Pogovorimo se o osnovni uporabi strace in razumemo osnovni izhod ukaza in kako ga lahko uporabimo.

OPOMBA: Izhod Strace, kot so imena sistemskih klicev, ustrezni argumenti in vrnjene vrednosti, se obdela standardni deskriptor datoteke z napakami (stderr).

Osnovni način uporabe strace je tako, da pokličete pripomoček strace, ki mu sledi ime programa, katerega vedenje želimo razumeti.

Tu je primer tega z uporabo ukaza ls:

Vau! To je veliko rezultatov za preprost ukaz, kot je ls.

Čeprav ne moremo razpravljati o vseh rezultatih ukaza strace, lahko destiliramo in razumemo njegov pomen.

Če upoštevate prvo vrstico v zgornjem izhodu, boste opazili naslednje funkcije.

Zato je v prvi vrstici sistemski klic execve (zaženi program z uporabo določenega polja argumentov), ​​argumenti sistemskega klica so (“/ bin / ls”, [“ls”, “/”], 0x7fffc4b277a8 / * 13 vars * /) in vrnjena vrednost 0.

https: // linkfy.do / izvršiti

Sistemski klici execve izvršijo binarno datoteko, ki jo želimo uporabiti, v tem primeru se nahaja v (/ bin / ls) in niz argumentov je pot, ki jo želimo navesti.

Opazili boste tudi zapis, priložen poševnici naprej in zvezdici. Za naš primer:

/ * 13 vars * /

Zgornji izhod kaže število spremenljivk, dodanih kot rezultat klica procesa. Do okolja znotraj funkcije execv se dostopa z zunanjo spremenljivko okolja, definirano kot:

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

Končni izhod je vrnjena vrednost, ki je v tem primeru 0.

Opazili boste tudi, da večina vrstic izhoda sledi podobnemu vzorcu, ki smo ga obravnavali zgoraj.

Kako izslediti določene sistemske klice

Čeprav strace daje veliko informacij o sistemskih klicih programov, vas bo večina primerov pozvala, da filtrirate določene sistemske klice. V ta namen ukazu strace posredujemo zastavico -e, ki ji sledi ime sistemskega klica, ki ga potrebujemo.

Kaj pa pogled na sistemske klice za branje za ukaz ls. Na primer:

strace -e branje ls

Opazili boste, da se prikažejo samo prebrani sistemski klici.

Sistemski klic za branje sprejme tri argumente: deskriptor datoteke, medpomnilnik in število bajtov. Nato sistemski klic prebere do števila bajtov iz posredovanega argumenta deskriptorja datoteke v medpomnilnik.

https: // linkfy.na / readyscall

Povzetek sistemskih klicev

Strace nam omogoča tudi povzetek sistemskih klicev, ki jih opravi postopek. S posredovanjem argumenta -c ali -summary lahko dobimo izhod, kot je prikazan spodaj:

Ukaz filtrira in razporedi izhod učinkoviteje kot običajni izhod strace. Če želite dobiti tako povzetek kot običajni izhod strace, podajte argument -C.

Kako uporabljati Strace pri tekočih procesih

V drugih primerih boste potrebovali sled tekočega procesa. Do tega trenutka smo uporabili samo en ukaz. Če želite izslediti tekoči postopek, lahko z argumentom -p, ki mu sledi proces ID procesa (PID), dodamo strace.

PID tekočega procesa lahko dobite z uporabo orodij za nadzor zgoraj in grep, ps, htop, pidof ali druga sistema.

Na primer, da dobimo PID procesa apache, lahko uporabimo:

ps -ax | grep -i apache2

To vam mora dati PID procesa apache2 (v tem primeru PID 3514) in ga lahko uporabimo za pritrditev na strace.

To bi moralo prikazati rezultat, podoben spodnjemu.

Strace bo neprekinjeno sledil priloženemu procesu in prikazoval izhodne podatke, ko pripeti postopek izvaja sistemske klice. Če želite zaključiti sled, pritisnite CTRL + C, s čimer se postopek loči od stracesa.

Kako shraniti izhod Strace v datoteke

Izhod stracea lahko kot argument preusmerimo tudi v datoteko. Z uporabo oznake -o, ki ji kot argument sledi pot do datoteke, lahko shranimo dnevnike strace.

Na primer:

strace -p 3514 -o ~ / Desktop / apache_trace

Ko je datoteka shranjena, jo lahko pozneje spremljate in analizirate.

Zaključek

V tem priročniku smo se naučili, kako namestiti in uporabljati strace na glavnih distribucijah Linuxa. Zdaj, ko razumete sistemske klice in kako delujejo procesi, lahko s strace spremljate in odpravljate napake v delujočem sistemskem procesu.

Koncepti, naučeni v tej vadnici, so zelo koristni, predvsem zato, ker lahko naučeno spremljate, če kdo posega v sistemske procese.

Kako uporabljati AutoKey za avtomatizacijo iger Linux
AutoKey je namizni pripomoček za avtomatizacijo za Linux in X11, programiran v Python 3, GTK in Qt. Z njegovo funkcijo skriptiranja in MACRO lahko avt...
Kako prikazati števec FPS v igrah Linux
Linux gaming je dobil velik zagon, ko je Valve leta 2012 napovedal podporo Linuxu za odjemalca Steam in njihove igre. Od takrat se je veliko AAA in in...
Kako prenesti in igrati Sid Meier's Civilization VI v Linuxu
Uvod v igro Civilization 6 je sodoben pogled na klasični koncept, uveden v seriji iger Age of Empires. Ideja je bila dokaj preprosta; začeli bi v zelo...