„Strace“ komandos „Linux“ procesų trikčių šalinimui

Kai esame atsakingi už mašinas su „Linux“ operacinėmis sistemomis, vienas iš naudingiausių ir praktiškiausių būdų tinkamai valdyti kiekvieną jų aspektą yra žinojimas apie įvairias priemones ir komandas, skirtas jų diegimui ir palaikymui.

Šį kartą „Solvetic“ kalbės apie komandų eilutės įrankį, vadinamą „strace“, ir pamatysime, kaip tai gali tapti praktiška operacinės sistemos administravimui.

Kas yra tempimas„strace“ yra naudingas komandų eilutės įrankis diagnozuojant, nurodant ir vykdant derinimo užduotis. Sistemos administratoriai mano, kad „strace“ yra praktinis įrankis, padedantis išspręsti problemas, susijusias su programomis, kurių šaltinio nėra, nes jų nereikia iš naujo sukompiliuoti, kad jas būtų galima atsekti.
„Strace“ įrankis fiksuoja ir registruoja visus sistemos iškvietimus, kuriuos atliko procesas, ir proceso metu gautus signalus. „Strace“ yra atsakinga už kiekvieno sistemos iškvietimo pavadinimo ir jo argumentų skliausteliuose rodymą bei grąžinimo į standartinę klaidą vertę, pasirinktinai, jį bus galima nukreipti į failą.

1. Strasų įrengimas


Norėdami įdiegti strace, turime vykdyti vieną iš šių komandų:
 sudo apt install strace (Debian arba Ubuntu) yum install strace (RedHat arba CentOS) dnf install strace (Fedora)
Jei programa sugenda ar elgiasi netikėtai, bus galima pasiekti sistemos skambučius ir sužinoti, kas tiksliai įvyko jos vykdymo metu.

Sistemos iškvietimus galima suskirstyti į įvairius įvykius: susijusius su procesų valdymu, tuos, kurie kaip failą laiko argumentu, tuos, kurie susiję su tinklais, atminties paskirstymu, signalais, IPC ir sistemos iškvietimais, susijusiais su failų aprašymais.

2. Kaip išspręsti proceso problemas „Linux“ naudojant strace komandas


Toliau matysime skirtingas strace komandas, kad išspręstume įvairias proceso problemas, kurios gali kilti „Linux“.

Sekimo sistema skambina sparčiaiŠi parinktis leidžia mums stebėti visus sistemos skambučius, kuriuos atliko komanda df, todėl vykdome šiuos veiksmus:

 strace df -h

Šioje išvestyje galime pamatyti įvairių tipų sistemos skambučius, kuriuos atliko komanda df, pavyzdžiui, vienas iš jų yra:

 atviras (" / etc / ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
Kur:
  • Atidaryti: tai yra sistemos skambučio tipas
  • Tai yra sistemos iškvietimo argumentas: "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC
  • 3: Tai yra sistemos skambučio grąžinimo vertė

Stebėkite „Linux“ PID procesusJei sistemoje jau vykdomas procesas, jį bus galima atsekti naudojant PID taip:

 465
Tai užpildys ekraną nuolatine išvestimi, rodančia, kad sistemos skambučiai atliekami proceso metu, ir baigsime paspausdami „Ctrl“ + C klavišus.

Gaukite „Linux“ proceso santraukąNaudojant parametrą -c, bus galima generuoti kiekvieno sistemos skambučio viso laiko, skambučių ir klaidų ataskaitą, todėl vykdysime šią sintaksę:

 sudo strace -c -p (PID)

Spausdinti instrukcijų rodyklę sistemos skambučio metu. Parinktis -i rodo instrukcijų rodyklę kiekvieno programos skambučio metu.

 sudo strace -i df -h

Rodyti dienos laiką kiekvienai sekimo išvesties eiluteiNaudojant strace, galima atspausdinti dienos laiką kiekvienai sekimo išvesties eilutei, naudojant vėliavą -t:

 sudo strace -t df -h

Rodyti sistemos skambučiams skirtą spausdinimo laikąNorėdami parodyti laiko skirtumą tarp kiekvieno sistemos skambučio pradžios ir pabaigos, turime naudoti parinktį -T:

 sudo strace -T df -h

Stebėkite konkrečius skambučius„Trace = write“ komanda yra žinoma kaip kvalifikuota išraiška, kur pėdsakas yra kvalifikatorius (kiti apima signalą, santrumpą, daugiažodį, neapdorotą, skaitomą ar rašomą). Tokiu atveju įvedate kvalifikatoriaus reikšmę. Ši komanda rodo realiu laiku, kai sistema kviečia spausdinti df išvestį į standartinę išvestį:

 sudo strace -e pėdsakas = rašyti df -h

Kai kurios papildomos komandos, kurias galime naudoti, yra šios:

 sudo strace -e pėdsakas = atidaryti, uždaryti df -hsudo strace -e pėdsakas = atidaryti, uždaryti, skaityti, rašyti df -hsudo strace -e pėdsakas = visi df -h

Nubraižykite sistemos skambučius pagal sąlygąŠi komanda gali būti naudojama sekant visus sistemos skambučius, susijusius su proceso valdymu, vykdysime šiuos veiksmus:

 sudo strace -q -e pėdsakas = procesas df -h

Dabar, norėdami atsekti visus sistemos skambučius, kurių argumentai yra failo pavadinimas, vykdysime šią komandą:

 sudo strace -q -e pėdsakas = failas df -h

Norėdami atsekti visus sistemos skambučius, susijusius su atminties paskirstymu, vykdysime šią eilutę:

 sudo strace -q -e pėdsakas = atmintis df -h

Peradresuoti pėdsaką į išvesties failąJei norime tolesnius pranešimus, išsiųstus į standartinę klaidą, įrašyti į failą, naudosime parinktį -o. Tai reiškia, kad tik komandos išvestis spausdinama ekrane taip:

 sudo strace -o df_debug.txt df -h

Mes galime vizualizuoti šį failą vykdydami eilutę:

 katė df_debug.txt

Įdiekite „strace“ derinimo išvestįJei norime rodyti strace įrankio derinimo informaciją, turime naudoti vėliavą -d:

 strace -d df -h

„Strace“ pagalbaNorėdami parodyti strace komandos pagalbą, vykdysime šią eilutę:

 vyro strace

Štai kaip mes matėme, kaip „strace“ tampa dar viena pagalba atliekant valdymo užduotis „Linux“ distribucijose.

wave wave wave wave wave