Когато под наша отговорност имаме машини с операционни системи 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.