Strace команди за отстраняване на проблеми с Linux процеси

Когато под наша отговорност имаме машини с операционни системи Linux, един от най -полезните и практични начини за правилно управление на всеки аспект от тях е познаването на различните помощни програми и команди, които съществуват за тяхното внедряване и поддръжка.

Този път Solvetic ще говори за помощната програма за командния ред, наречена strace, и ще видим как тя може да стане практична за администриране на операционната система.

Какво е stracestrace е полезен инструмент за командния ред за диагностициране, инструктиране и изпълнение на задачи за отстраняване на грешки. Системните администратори намират strace за практичен инструмент за решаване на проблеми с програми, за които източникът не е достъпен, тъй като те не се нуждаят от прекомпилиране, за да ги проследят.
Инструментът strace улавя и записва всички системни повиквания, направени от процес, и сигналите, получени от процеса, strace отговаря за показването на името на всяко системно извикване заедно с аргументите му в скоби и връщането му на стандартна грешка, по избор, ще бъде възможно да го пренасочите към файл.

1. Монтаж на Strace


За да инсталираме strace, трябва да изпълним една от следните команди:
 sudo apt install strace (Debian или Ubuntu) yum install strace (RedHat или CentOS) dnf install strace (Fedora)
В случай, че дадена програма се срине или се държи по неочакван начин, ще бъде възможно да се осъществи достъп до системните повиквания, за да се добие представа какво точно се е случило по време на нейното изпълнение.

Системните обаждания могат да бъдат категоризирани в различни събития: тези, свързани с управлението на процеси, тези, които приемат файл като аргумент, тези, които включват мрежи, разпределение на паметта, сигнали, IPC, а също и системни повиквания, свързани с файлови дескриптори.

2. Как да отстранявате проблеми с процеса в Linux с команди strace


След това ще видим различни команди на strace за решаване на различните проблеми с процеса, които могат да възникнат в Linux.

Проследяване на системни повиквания със straceТази опция ни позволява да проследяваме всички системни повиквания, направени от командата df, за това изпълняваме следното:

 strace df -h

В този изход можем да видим различни видове системни повиквания, направени от командата df, например, един от тях е:

 отворен (" / etc / ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
Където:
  • Отворен: Това е видът на системното обаждане
  • Това е аргументът на системното извикване: "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC
  • 3: Това е връщаната стойност на системния разговор

Проследете PID процесите на LinuxАко процесът вече се изпълнява в системата, ще бъде възможно да се проследи чрез неговия PID, както следва:

 sudo strace -c -p 465
Това ще запълни екрана с непрекъснат изход, който показва, че системните повиквания се извършват от процеса, за да завършим, ще натиснем клавишите Ctrl + C.

Вземете обобщението на процеса на LinuxС помощта на параметъра -c ще бъде възможно да се генерира отчет за общото време, повикванията и грешките за всяко системно обаждане, за това ще изпълним следния синтаксис:

 sudo strace -c -p (PID)

Отпечатайте указателя за инструкции по време на системно обаждане. Опцията -i показва указателя за инструкции по време на всяко системно обаждане, направено от програмата.

 sudo strace -i df -h

Показвайте часа на деня за всеки изходен ред за проследяванеСъс strace е възможно да отпечатате часа на деня за всеки ред в изхода за проследяване, като използвате флага -t:

 sudo strace -t df -h

Показва времето за печат, изразходвано за системни повикванияЗа да покажем времевата разлика между началото и края на всяко системно обаждане, направено от програма, трябва да използваме опцията -T:

 sudo strace -T df -h

Проследете конкретни обажданияКомандата trace = write е известна като квалифициран израз, където проследяването е квалификатор (други включват сигнал, съкращение, подробно, необработено, четене или запис). В този случай въвеждате стойността на квалификатора. Следващата команда показва в реално време системните повиквания за отпечатване на df изхода към стандартен изход:

 sudo strace -e trace = напишете df -h

Някои допълнителни команди, които можем да използваме са:

 sudo strace -e следа = отворено, затваряне df -hsudo strace -e следа = отваряне, затваряне, четене, запис df -hsudo strace -e следа = всички df -h

Графични системни повиквания въз основа на условиеТази команда може да се използва за проследяване на всички системни повиквания, които включват управление на процеси, ние ще изпълним следното:

 sudo strace -q -e следа = процес df -h

Сега, за да проследим всички системни обаждания, които приемат име на файл като аргумент, ще изпълним следната команда:

 sudo strace -q -e следа = файл df -h

За да проследим всички системни обаждания, които включват разпределение на паметта, ще изпълним следния ред:

 sudo strace -q -e следа = памет df -h

Пренасочване на проследяване към изходния файлАко искаме да напишем последващи съобщения, изпратени до стандартна грешка във файл, ще използваме опцията -o. Това означава, че само изходът на командата се отпечатва на екрана, както следва:

 sudo strace -o df_debug.txt df -h

Можем да визуализираме този файл, като изпълним реда:

 котка df_debug.txt

Разгърнете изход за отстраняване на грешки на straceАко искаме да покажем информацията за отстраняване на грешки за инструмента strace, трябва да използваме флага -d:

 strace -d df -h

Strace помощЗа да покажем помощта на командата strace, ще изпълним следния ред:

 мъж strace

Ето как видяхме как strace се превръща в още една помощ за управленските задачи в дистрибуциите на Linux.

wave wave wave wave wave