Linuxin komentorivin hallinta · Oppitunti

Järjestelmäkutsujen jäljitys komennoilla strace ja ltrace

Syventäkää vianmääritystaitojanne seuraamalla prosessin tekemiä järjestelmä- ja kirjastokutsuja, jotta näette täsmälleen, missä suoritus pysähtyy tai epäonnistuu.

Oppitunti 4/413 vaihetta

Järjestelmäkutsujen jäljitys komennoilla strace ja ltrace on ilmainen Linuxin komentorivin hallinta-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Linuxin komentorivin hallinta-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Linuxin komentorivin hallinta-kurssilla on yhteensä 4 oppituntia.

Kun mittarit eivät riitä

Suoritin-, muisti- ja I/O-työkalut kertovat, että jokin on hidasta. Selvittääksenne miksi jäljittäkää, mitä prosessi todella pyytää ydintä tekemään. strace ja ltrace tarjoavat tähän näkymän.

Mitä strace näyttää

strace tallentaa jokaisen järjestelmäkutsun: tiedostojen avaamiset, luvut, verkkolähetykset ja niiden paluuarvot, myös virheet.

strace ls /tmp

Käynnissä olevaan prosessiin liittyminen

Käyttäkää valitsinta -p PID jäljittääksenne jo käynnissä olevaa ohjelmaa, kuten jumittunutta palvelua.

sudo strace -p 4567

Tiettyjen kutsujen suodattaminen

-e trace= rajoittaa tulosteen teille tärkeisiin kutsuihin, esimerkiksi pelkästään tiedostoihin liittyviin kutsuihin.

strace -e trace=openat,read,write cat /etc/hostname

Puuttuvien tiedostojen etsiminen

Tyypillinen käyttötapaus on selvittää, minkä tiedoston avaaminen ohjelmalta epäonnistuu. Etsikää tulosteesta koodia ENOENT (tiedostoa ei ole).

strace -e trace=openat myapp 2>&1 | grep ENOENT

Yhteenveto valitsimella -c

-c tulostaa profiilin: mitkä järjestelmäkutsut käyttivät eniten aikaa ja kuinka monta kertaa kutakin kutsuttiin.

strace -c ls -R /usr/share

Kutsujen ajoittaminen

-T näyttää, kuinka kauan kukin järjestelmäkutsu kesti, ja -t lisää aikaleimat, joiden avulla näette, missä prosessi estyy.

strace -T -e trace=read myapp

Lapsiprosessien seuraaminen

-f seuraa fork-kutsuja, joten voitte jäljittää myös lapsiprosessit. Tämä on välttämätöntä palvelimille, jotka käynnistävät työprosesseja.

strace -f -p 4567

Tulosteen tallentaminen tiedostoon

Jäljitystulosteet ovat runsaita; -o kirjoittaa ne tiedostoon, jota voitte myöhemmin käsitellä grepillä ilman päätteen täyttymistä.

strace -o trace.log -f myapp

ltrace kirjastokutsuja varten

Kun strace näyttää ydinkutsut, ltrace näyttää kirjastokutsut, kuten malloc- tai strcmp-kutsut, joista on hyötyä logiikkatason virheenkorjauksessa.

ltrace ./myprogram

Vianmääritysohje

Kun palvelu jumittuu, liittykää siihen komennolla strace -f -p, etsikää järjestelmäkutsua, joka ei koskaan palaa (usein estynyttä read- tai connect-kutsua), ja olette löytäneet jumittumiskohdan.

Pikatarkistus

Minkä tyyppisen toiminnan strace ensisijaisesti paljastaa?

Kertaus

Osaatte nyt jäljittää prosessia järjestelmäkutsutasolla:

  • strace cmd tai -p PID prosessiin liittymistä varten
  • -e trace= suodattaa, -c laatii profiilin ja -T/-t mittaa ajan
  • -f seuraa lapsiprosesseja ja -o tallentaa tulosteen
  • ltrace näyttää kirjastokutsut

Etsikää virheitä, kuten ENOENT, tai järjestelmäkutsua, joka ei koskaan palaa.

Aloita maksutta

Opi Linuxin komentorivin hallinta tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Järjestelmäkutsujen jäljitys komennoilla strace ja ltrace” ilmainen?

Kyllä – oppitunnin ”Järjestelmäkutsujen jäljitys komennoilla strace ja ltrace” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Linuxin komentorivin hallinta-kurssin, päivitä CoddyKit PROhon. Linuxin komentorivin hallinta-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Järjestelmäkutsujen jäljitys komennoilla strace ja ltrace”?

Syventäkää vianmääritystaitojanne seuraamalla prosessin tekemiä järjestelmä- ja kirjastokutsuja, jotta näette täsmälleen, missä suoritus pysähtyy tai epäonnistuu. Harjoittelet Linuxin komentorivin hallinta-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Linuxin komentorivin hallinta-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Linuxin komentorivin hallinta-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Järjestelmäkutsujen jäljitys komennoilla strace ja ltrace”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Linuxin komentorivin hallinta-oppitunnilla?

Kyllä. Jokainen Linuxin komentorivin hallinta-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Levyn I/O:n seuranta: `iostat`, `iotop`
  2. Muistin ja suorittimen suorituskykytyökalut
  3. Edistyneet lokien käsittely- ja vianmääritystekniikat
  4. Järjestelmäkutsujen jäljitys komennoilla strace ja ltrace
← Takaisin: Linuxin komentorivin hallinta