Príkazy pre Linux

Ako používať Strace v systéme Linux

Ako používať Strace v systéme Linux
Pri práci so systémami Linux budete často musieť skontrolovať a pochopiť akcie vykonané procesmi a systémové volania vykonané ich vykonaním.

Pokiaľ ide o vykonávanie týchto úloh, jadro Linuxu poskytuje funkcie ako napr ptrace ladiť a diagnostikovať procesy.

Tento článok pojednáva o tom, ako používať sledovací nástroj na sledovanie, sledovanie a ladenie procesov interagujúcich s jadrom.

Čo sú to systémové volania?

Predtým, ako diskutujeme o tom, ako používať strace, musíte pochopiť, čo hľadáme a ako fungujú. To znamená, že by sme si mali prečítať základné informácie o hovoroch systému Linux.

Systémové volanie je programová metóda, prostredníctvom ktorej program môže požadovať službu od jadra systému. To je proces, ktorý použijeme na kontrolu akcií medzi používateľskými procesmi a jadrom systému Linux.

Kedykoľvek používateľ vykoná program, ktorý umožňuje čítanie, zápis, zabíjanie, ukončenie, viazanie atď., na požiadanie uskutočňujú systémové volanie. Existuje široká škála systémových volaní, ktoré programy používajú na vykonávanie rôznych úloh, ako je sieťové pripojenie, čítanie a zápis do súborov, inicializácia a ukončenie procesov a oveľa viac.

Systémové volania považujte za funkcie - správajú sa podobne - pretože môžu prijímať argumenty a vracať hodnoty. Hlavný rozdiel medzi systémovými volaniami a normálnou prevádzkou je v tom, že systémové volania môžu priamo komunikovať s jadrom. Systémové volania používajú a mechanizmus pasce na navigáciu medzi užívateľským priestorom a jadrom.

V systéme Linux je tento mechanizmus pre používateľov dobre skrytý v knižniciach, ako je Glibc.

POZNÁMKA: Systémové volania a interakcie s jadrom majú oveľa viac než to, o čom sme hovorili v tomto tutoriále. Viac informácií nájdete na manuálových stránkach.

https: // linkfy.do / syscalls

https: // linkfy.do / trapmanual

Ako nainštalovať sledovanie v systéme Linux

Aj keď stopovacie nástroje nie sú predvolene predinštalované v hlavných distribúciách Linuxu, sú k dispozícii vo väčšine oficiálnych úložísk týchto distribúcií; môžete ho ľahko nainštalovať pomocou predvolených správcov balíkov.

POZNÁMKA: Aj keď sa nebudeme zaoberať tým, ako nainštalovať sledovanie na všetkých systémoch, prediskutujeme, ako to urobiť, s hlavnými správcami balíkov, ako sú apt, dnf, pacman a yum

1: Debian (apt) Inštalácia

Nainštalujte sledovanie pomocou príkazu:

apt-get nainštalovať strace -y

2: RedHat Family (dnf a yum)

Ak chcete nainštalovať trasovanie pomocou správcu balíkov yum, zadajte príkaz:

yum nainštalovať sledovanie

Pre správcu balíkov dnf zadajte príkaz:

dnf nainštalovať trasovanie

3: Arch Linux (pacman)

Pre používateľov Arch Linuxu môžete nainštalovať sledovanie pomocou príkazu:

pacman -S strace

Teraz, keď máte nainštalované a spustené sledovanie, môžeme pokračovať a naučiť sa používať

Základné použitie trasovania: Sprievodca návodom

Poďme diskutovať o základnom použití sledovania a porozumieme základnému výstupu príkazu a tomu, ako ho môžeme použiť.

POZNÁMKA: Trasovací výstup, ako sú názvy systémových volaní, zodpovedajúce argumenty a návratové hodnoty, bude spracovaný pomocou štandardný deskriptor súborov chýb (stderr).

Základným spôsobom použitia sledovania je volanie nástroja sledovania, za ktorým nasleduje názov programu, ktorého správaniu chceme porozumieť.

Tu je príklad použitia príkazu ls:

Wow! To je veľa výstupu pre jednoduchý príkaz, ako je napríklad ls.

Aj keď nemôžeme diskutovať o všetkých výstupoch z príkazu strace, môžeme destilovať a pochopiť jeho význam.

Ak vezmete do úvahy prvý riadok vo výstupe vyššie, všimnete si nasledujúce funkcie.

Preto je v prvom riadku spustené systémové volanie (vykonajte program pomocou zadaného poľa argumentov), ​​argumenty systémového volania sú („/ bin / ls“, [„ls“, „/“], 0x7fffc4b277a8 / * 13 vars * /) a návratná hodnota 0.

https: // linkfy.vykonať / vykonať

Systémové volania execve vykonajú binárny súbor, ktorý chceme použiť, v tomto prípade umiestnený v (/ bin / ls) a pole argumentov je cesta, ktorou chceme vypísať obsah.

Tiež si všimnete notáciu s lomítkom a hviezdičkou. Pre náš príklad:

/ * 13 vars * /

Vyššie uvedený výstup označuje počet premenných pridaných v dôsledku volania procesu. Prostredie vo vnútri funkcie execv je prístupné pomocou externej premennej prostredia definovanej ako:

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

Konečným výstupom je návratová hodnota, ktorá je v tomto prípade 0.

Tiež si všimnete, že väčšina riadkov výstupu sledovania sa riadi podobným vzorom, aký sme diskutovali vyššie.

Ako sledovať špecifické systémové volania

Aj keď strace poskytuje veľa informácií o systémových hovoroch programov, väčšina inštancií vás vyzve na filtrovanie konkrétnych systémových volaní. Za týmto účelom odovzdáme príkazu -e príkazu strace, za ktorým nasleduje názov potrebného systémového volania.

Čo tak pozrieť sa na prečítané systémové volania po príkaze ls. Napríklad:

strace -e čítaj ls

Všimnete si, že sa tým zobrazujú iba prečítané systémové volania.

Čítané systémové volanie akceptuje tri argumenty: deskriptor súboru, vyrovnávacia pamäť a počet bajtov. Systémové volanie potom načíta až do počtu bajtov z odovzdaného argumentu deskriptora súboru do medzipamäte.

https: // linkfy.do / readsyscall

Zhrnutie systémových volaní

Strace nám tiež umožňuje získať súhrn systémových volaní uskutočnených procesom. Po odovzdaní argumentu -c alebo -summary-only môžeme získať výstup, ako je ten, ktorý je uvedený nižšie:

Príkaz filtruje a usporiada výstup efektívnejšie ako normálny výstup sledovania. Ak chcete získať súhrnný aj normálny výstup sledovania, odovzdajte argument -C.

Ako používať sledovanie s bežiacimi procesmi

Inokedy budete potrebovať stopu bežiaceho procesu. Do tohto bodu sme použili iba stopový príkaz. Na sledovanie bežiaceho procesu môžeme použiť argument -p nasledovaný procesom ID procesu (PID), aby sme k nemu pripojili trasovanie.

Môžete získať PID bežiaceho procesu pomocou nástrojov top a grep, ps, htop, pidof alebo iných nástrojov na monitorovanie systému.

Napríklad na získanie PID procesu apache môžeme použiť:

ps -ax | grep -i apache2

To by vám malo poskytnúť PID procesu apache2 (v tomto prípade PID 3514) a môžeme ho použiť na jeho pripevnenie.

To by malo zobrazovať výstup podobný tomu, ktorý je zobrazený nižšie.

Strace bude nepretržite sledovať pripojený proces a zobrazovať výstup, keď pripojený proces vykonáva systémové volania. Ak chcete ukončiť sledovanie, stlačte kombináciu klávesov CTRL + C, čím sa proces odpojí od sledovania.

Ako uložiť výstup sledovania do súborov

Môžeme tiež presmerovať výstup sledovania do súboru ako argument. Ak ako argument použijeme príznak -o, za ktorým nasleduje cesta k súboru, môžeme uložiť protokoly sledovania.

Napríklad:

strace -p 3514 -o ~ / Desktop / apache_trace

Po uložení súboru ho môžete neskôr sledovať a analyzovať.

Záver

V tejto príručke sme sa naučili, ako nainštalovať a používať sledovanie na hlavných distribúciách Linuxu. Teraz, keď rozumiete systémovým volaním a fungovaniu procesov, môžete pomocou sledovania monitorovať a ladiť spustený systémový proces.

Pojmy naučené v tomto tutoriále sú veľmi užitočné, hlavne preto, že to, čo ste sa naučili, môžete použiť na sledovanie, či niekto neoprávnene manipuluje so systémovými procesmi.

Ako zmeniť smer posúvania myši a touchpadu v systéme Windows 10
Myš a TouchpadNielenže uľahčujú výpočty, ale sú aj efektívnejšie a menej časovo náročné. Nemôžeme si predstaviť život bez týchto zariadení, ale je pra...
Ako zmeniť veľkosť, farbu a schému ukazovateľa myši a kurzora v systéme Windows 10
Ukazovateľ myši a kurzor vo Windows 10 sú veľmi dôležité aspekty operačného systému. Dá sa to povedať aj pre iné operačné systémy, takže v skutočnosti...
Hry Zadarmo a open source herné motory pre vývoj hier pre Linux
Zadarmo a open source herné motory pre vývoj hier pre Linux
Tento článok sa bude zaoberať zoznamom bezplatných a otvorených herných nástrojov, ktoré možno použiť na vývoj 2D a 3D hier v systéme Linux. Existuje ...