Linux-komennot

Kuinka käyttää Straceä Linuxissa

Kuinka käyttää Straceä Linuxissa
Kun työskentelet Linux-järjestelmien kanssa, sinun on usein tarkastettava ja ymmärrettävä prosessien tekemät toiminnot ja niiden suorittamat järjestelmäkutsut.

Kun kyse on tällaisten tehtävien suorittamisesta, Linux-ydin tarjoaa ominaisuuksia, kuten ptrace virheenkorjaukseen ja prosessien diagnosointiin.

Tässä artikkelissa käsitellään strace-työkalun käyttöä ytimen kanssa vuorovaikutuksessa olevien prosessien jäljittämiseen, seuraamiseen ja virheenkorjaukseen.

Mitä ovat järjestelmäpuhelut?

Ennen kuin keskustelemme stracen käytöstä, sinun on ymmärrettävä, mitä etsimme ja miten ne toimivat. Tämä tarkoittaa, että meidän pitäisi käydä läpi Linux-järjestelmän puhelujen perusteet.

Järjestelmäpuhelu on ohjelmallinen menetelmä, jonka avulla ohjelma voi pyytää palvelua järjestelmän ytimeltä. Tätä prosessia käytämme käyttäjän prosessien ja Linux-ytimen välisten toimien tarkastamiseen.

Aina kun käyttäjä suorittaa ohjelman, joka tekee lukemisesta, kirjoittamisesta, tappamisesta, poistumisesta, sitomisesta jne., pyynnöstä he soittavat järjestelmäkutsua. Ohjelmissa on laaja valikoima järjestelmäkutsuja erilaisten tehtävien suorittamiseen, kuten verkottuminen, tiedostojen lukeminen ja kirjoittaminen, prosessien alustaminen ja lopettaminen sekä paljon muuta.

Ajattele järjestelmäkutsuja funktioina - ne käyttäytyvät samalla tavalla - koska ne voivat hyväksyä argumentteja ja palauttaa arvoja. Tärkein ero järjestelmäkutsujen ja normaalin toiminnan välillä on se, että järjestelmäkutsut voivat olla suoraan vuorovaikutuksessa ytimen kanssa. Järjestelmäpuhelut käyttävät a ansa mekanismi siirtyäksesi käyttäjän tilan ja ytimen välillä.

Linux-järjestelmässä tämä mekanismi on piilotettu käyttäjiltä hyvin kirjastojen, kuten Glibc, avulla.

MERKINTÄ: Järjestelmäpuheluissa ja ytimen vuorovaikutuksessa on paljon enemmän kuin mitä tässä opetusohjelmassa olemme keskustelleet. Katso lisätietoja käsikirjan sivuilta.

https: // linkfy./ syscalls

https: // linkfy./ trapmanual

Kuinka asentaa strace Linuxiin

Vaikka strace-työkaluja ei ole valmiiksi asennettu valmiiksi suurimmissa Linux-jakeluissa, se on saatavana useimmissa näiden jakelujen virallisissa arkistoissa; voit asentaa sen helposti käyttämällä oletuspakettien hallintaohjelmia.

MERKINTÄ: Vaikka emme käsittele, miten strace asennetaan kaikkiin järjestelmiin, keskustelemme siitä, miten se tehdään suurten pakettien hallintaohjelmien kuten apt, dnf, pacman ja yum

1: Debianin (apt) asennus

Asenna strace komennolla:

apt-get install strace -y

2: RedHat-perhe (dnf ja yum)

Asenna strace yum-paketinhallinnalla kirjoittamalla komento:

asenna strace

Anna dnf-paketinhallinnalle komento:

dnf install strace

3: Arch Linux (pacman)

Arch Linux -käyttäjille voit asentaa strace-komennon:

pacman -S strace

Nyt kun strace on asennettu ja käynnissä, voimme siirtyä eteenpäin ja oppia käyttämään

Strace-peruskäyttö: opas

Keskustellaan strace-peruskäytöstä ja ymmärretään komennon peruslähtö ja miten voimme käyttää sitä.

MERKINTÄ: Strace-lähtö, kuten järjestelmäkutsujen nimet, vastaavat argumentit ja palautusarvot, hoidetaan tavallinen virhetiedoston kuvaaja (stderr).

Perustapa käyttää straceä on kutsua strace-apuohjelma ja sen jälkeen ohjelman nimi, jonka käyttäytymisen haluamme ymmärtää.

Tässä on esimerkki siitä, että käytät komentoa ls:

Vau! Se on paljon lähtöä yksinkertaiselle komennolle, kuten ls.

Vaikka emme voi keskustella kaikista strace-komennon tuloksista, voimme tislata ja ymmärtää sen merkityksen.

Jos tarkastelet yllä olevan lähdön ensimmäistä riviä, huomaat seuraavat ominaisuudet.

Siksi ensimmäisellä rivillä järjestelmäkutsu suoritetaan (suorita ohjelma käyttämällä määritettyä argumenttiryhmää), järjestelmäkutsun argumentit ovat (“/ bin / ls”, [“ls”, “/”], 0x7fffc4b277a8 / * 13 vars * /) ja palautusarvo 0.

https: // linkfy.suorittaa / toteuttaa

Execve-järjestelmän kutsut suorittavat binäärin, jota haluamme käyttää, tässä tapauksessa, joka sijaitsee (/ bin / ls): ssä ja argumenttiryhmä on polku, jonka haluamme listata sisällön.

Huomaat myös merkinnän, joka on liitetty eteenpäin vinoviivalla ja tähdellä. Esimerkiksi:

/ * 13 vaihtelua * /

Yllä oleva tulos osoittaa muuttujien määrän, jotka lisätään prosessin kutsumisen seurauksena. Execv-toiminnon ympäristöön pääsee käyttämällä ulkoista ympäristömuuttujaa seuraavasti:

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

Lopullinen tuotos on paluuarvo, joka on tässä tapauksessa 0.

Huomaa myös, että suurin osa strace-lähdön riveistä seuraa samanlaista mallia, josta keskustelimme edellä.

Kuinka seurata tiettyjä järjestelmäkutsuja

Vaikka strace antaa paljon tietoa ohjelmajärjestelmän puheluista, useimmat tapaukset kutsuvat sinua suodattamaan tietyt järjestelmäkutsut. Tätä varten välitämme -e-lipun strace-komennolle, jota seuraa tarvitsemamme järjestelmäkutsun nimi.

Entä katsomalla lukujärjestelmän kutsuja ls-komentoon. Esimerkiksi:

strace -e lukea ls

Huomaat, että tämä näyttää vain luetut järjestelmäpuhelut.

Luettu järjestelmäpuhelu hyväksyy kolme argumenttia: tiedostokuvaaja, puskuri ja tavujen lukumäärä. Tämän jälkeen järjestelmäkutsu lukee laskutavut välitetystä tiedostokuvaaja-argumentista puskuriin.

https: // linkfy.soittamaan / lukemaan soittopyyntöä

Yhteenveto järjestelmäpuheluista

Strace antaa meille myös mahdollisuuden saada yhteenveto prosessin tekemistä järjestelmäpuheluista. Välittämällä vain -c tai -summary-argumentin voimme saada alla olevan kaltaisen tuotoksen:

Komento suodattaa ja järjestää lähdön tehokkaammin kuin normaali strace-lähtö. Jos haluat saada sekä yhteenvedon että normaalin strace-lähdön, välitä -C-argumentti.

Kuinka käyttää Straceä juoksuprosesseissa

Muina aikoina tarvitset jäljen käynnissä olevasta prosessista. Tähän asti olemme käyttäneet vain yhtä komentoa strace. Käynnissä olevan prosessin jäljittämiseksi voimme käyttää -p-argumenttia, jota seuraa prosessin ID (PID) -prosessi, kiinnittämään siihen strace.

Voit saada käynnissä olevan prosessin PID: n käyttämällä top- ja grep-, ps-, htop-, pidof- tai muita järjestelmänvalvontatyökaluja.

Esimerkiksi apache-prosessin PID: n saamiseksi voimme käyttää:

ps -ax | grep -i apache2

Sen pitäisi antaa sinulle apache2-prosessin PID (tässä tapauksessa PID 3514), ja voimme käyttää sitä kiinnittämään sen straceiin.

Sen pitäisi näyttää samanlainen lähtö kuin alla.

Strace seuraa jatkuvasti liitettyä prosessia ja näyttää lähdön, kun liitetty prosessi suorittaa järjestelmäkutsuja. Lopeta jäljitys painamalla CTRL + C, joka irrottaa prosessin merkinnästä.

Strace-tuotoksen tallentaminen tiedostoihin

Voimme myös ohjata strace-tuotoksen tiedostoon argumenttina. Käyttämällä -o-lippua, jota seuraa tiedostopolku argumenttina, voimme tallentaa strace-lokit.

Esimerkiksi:

strace -p 3514 -o ~ / Desktop / apache_trace

Kun tiedosto on tallennettu, voit myöhemmin seurata ja analysoida sitä.

Johtopäätös

Tässä oppaassa opimme, miten strace asennetaan ja käytetään tärkeimmissä Linux-jakeluissa. Nyt kun ymmärrät järjestelmäkutsut ja miten prosessit toimivat, voit seurata ja korjata käynnissä olevaa järjestelmäprosessia stracen avulla.

Tässä opetusohjelmassa opitut käsitteet ovat erittäin hyödyllisiä, lähinnä siksi, että voit käyttää oppimiasi seuraamaan, jos joku peukaloi järjestelmää.

Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...
Mouse left-click button not working on Windows 10
If you are using a dedicated mouse with your laptop, or desktop computer but the mouse left-click button is not working on Windows 10/8/7 for some rea...