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 -y2: Družina RedHat (dnf in yum)
Če želite namestiti strace z upraviteljem paketov yum, vnesite ukaz:
yum namestite straceZa upravitelja paketov dnf vnesite ukaz:
dnf namestite strace3: Arch Linux (pacman)
Za uporabnike Arch Linuxa lahko namestite strace z ukazom:
pacman -S straceZdaj, 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.
- Ime sistemskega klica
- Argumenti, posredovani sistemskemu klicu, priloženemu v oklepaju.
- Vrnjena vrednost iz sistemskega klica
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 apache2To 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_traceKo 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.