Strace komandas Linux procesu traucējummeklēšanai

Ja mūsu atbildībā ir mašīnas ar Linux operētājsistēmām, viens no visnoderīgākajiem un praktiskākajiem veidiem, kā pareizi pārvaldīt katru no šiem aspektiem, ir dažādu utilītu un komandu apzināšanās, kas pastāv to izvietošanai un atbalstīšanai.

Šoreiz Solvetic runās par komandrindas utilītu strace, un mēs redzēsim, kā tā var kļūt praktiska operētājsistēmas administrēšanai.

Kas ir stracestrace ir noderīgs komandrindas rīks, lai diagnosticētu, norādītu un palaistu atkļūdošanas uzdevumus. Sistēmas administratori uzskata, ka strace ir praktisks rīks, lai atrisinātu problēmas ar programmām, kurām nav pieejams avots, jo tās nav jāapkopo, lai tās izsekotu.
Strace rīks uztver un reģistrē visus sistēmas izsaukumus, ko veicis process, un procesa saņemtos signālus, strace ir atbildīgs par katra sistēmas izsaukuma nosaukuma parādīšanu kopā ar argumentiem iekavās un atgriešanās vērtību standarta kļūdai, pēc izvēles, to būs iespējams novirzīt uz failu.

1. Strāvas uzstādīšana


Lai instalētu strace, mums jāizpilda viena no šīm komandām:
 sudo apt install strace (Debian vai Ubuntu) yum install strace (RedHat vai CentOS) dnf install strace (Fedora)
Gadījumā, ja programma avarē vai uzvedas negaidīti, būs iespējams piekļūt sistēmas zvaniem, lai iegūtu priekšstatu par to, kas tieši notika tās izpildes laikā.

Sistēmas izsaukumus var iedalīt dažādos notikumos: tie, kas saistīti ar procesu pārvaldību, tie, kas uzskata failu par argumentu, tie, kas saistīti ar tīkliem, atmiņas piešķiršanu, signāliem, IPC un arī sistēmas zvani, kas saistīti ar failu aprakstiem.

2. Kā novērst procesu problēmas Linux, izmantojot strace komandas


Tālāk mēs redzēsim dažādas strace komandas, lai atrisinātu dažādas procesa problēmas, kas var rasties Linux.

Izsekošanas sistēma zvana ar straceŠī opcija ļauj mums izsekot visiem sistēmas zvaniem, ko veic komanda df, tāpēc mēs izpildām sekojošo:

 strace df -h

Šajā izejā mēs varam redzēt dažāda veida sistēmas zvanus, ko veic komanda df, piemēram, viens no tiem ir:

 open (" / etc / ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
Kur:
  • Atvērts: tas ir sistēmas zvana veids
  • Tas ir sistēmas izsaukuma arguments: "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC
  • 3: tā ir sistēmas izsaukuma atgriešanās vērtība

Izsekojiet Linux PID procesusJa process jau darbojas sistēmā, to varēs izsekot, izmantojot PID šādi:

 sudra strace -c -p 465
Tas aizpildīs ekrānu ar nepārtrauktu izvadi, kas parāda, ka process veic sistēmas zvanus, lai pabeigtu, mēs nospiedīsim Ctrl + C taustiņus.

Iegūstiet Linux procesa kopsavilkumuIzmantojot parametru -c, katram sistēmas izsaukumam būs iespējams izveidot pārskatu par kopējo laiku, zvaniem un kļūdām, šim nolūkam mēs izpildīsim šādu sintaksi:

 sudo strace -c -p (PID)

Drukāt instrukciju rādītāju sistēmas izsaukuma laikā. Opcija -i parāda instrukciju rādītāju katra programmas izsaukuma laikā.

 sudo strace -i df -h

Parādiet dienas laiku katrai izsekošanas izvades rindaiIzmantojot strace, ir iespējams izdrukāt dienas laiku katrai rindai izsekošanas izvadā, izmantojot -t karodziņu:

 sudo strace -t df -h

Parādiet sistēmas zvaniem pavadīto drukāšanas laikuLai parādītu laika starpību starp katra sistēmas veiktā sistēmas zvana sākumu un beigām, mums jāizmanto opcija -T:

 sudo strace -T df -h

Izsekojiet konkrētus zvanusKomanda izsekot = rakstīt ir pazīstama kā kvalificēta izteiksme, kur izsekošana ir kvalificētājs (citi ietver signālu, saīsinājumu, detalizētu, neapstrādātu, lasītu vai rakstītu). Šajā gadījumā jūs ierakstāt kvalifikācijas vērtību. Šī komanda reāllaikā parāda sistēmas izsaukumu, lai izdrukātu df izvadi uz standarta izvadi:

 sudo strace -e izsekot = rakstīt df -h

Dažas papildu komandas, kuras mēs varam izmantot, ir šādas:

 sudo strace -e izsekot = atvērt, aizvērt df -hsudo strace -e izsekot = atvērt, aizvērt, lasīt, rakstīt df -hsudo strace -e izsekot = visu df -h

Zīmējiet sistēmas zvanus, pamatojoties uz nosacījumuŠo komandu var izmantot, lai izsekotu visus sistēmas izsaukumus, kas saistīti ar procesu pārvaldību, mēs izpildīsim sekojošo:

 sudo strace -q -e izsekot = process df -h

Tagad, lai izsekotu visus sistēmas zvanus, kuros faila nosaukums tiek ņemts par argumentu, mēs izpildīsim šādu komandu:

 sudo strace -q -e izsekot = fails df -h

Lai izsekotu visus sistēmas zvanus, kas saistīti ar atmiņas piešķiršanu, mēs izpildīsim šādu rindu:

 sudo strace -q -e izsekot = atmiņa df -h

Novirzīt izsekošanu uz izvades failuJa vēlamies uz standarta kļūdu nosūtītos papildu ziņojumus ierakstīt failā, mēs izmantosim opciju -o. Tas nozīmē, ka ekrānā tiek drukāta tikai komandu izvade:

 sudo strace -o df_debug.txt df -h

Mēs varam vizualizēt šo failu, izpildot rindu:

 kaķis df_debug.txt

Izvietot strace atkļūdošanas izvadiJa mēs vēlamies parādīt strace rīka atkļūdošanas informāciju, mums jāizmanto karodziņš -d:

 strace -d df -h

Strace palīdzībaLai parādītu strace komandas palīdzību, mēs izpildīsim šādu rindu:

 cilvēks strace

Tādā veidā mēs esam redzējuši, kā strace kļūst par vēl vienu palīgu pārvaldības uzdevumu veikšanai Linux distros.

wave wave wave wave wave