Strace příkazy pro řešení problémů s procesy Linux

Když máme odpovědnost za stroje s operačními systémy Linux, je jedním z nejužitečnějších a nejpraktičtějších způsobů, jak správně spravovat každý jejich aspekt, znalost různých nástrojů a příkazů, které existují pro jejich nasazení a podporu.

Tentokrát bude Solvetic hovořit o nástroji příkazového řádku s názvem strace a uvidíme, jak se může stát praktickým pro správu operačního systému.

Co je to stracestrace je užitečný nástroj příkazového řádku pro diagnostiku, instruování a spouštění úloh ladění. Správci systému považují strace za praktický nástroj k řešení problémů s programy, pro které není zdroj k dispozici, protože pro jejich sledování není třeba je znovu kompilovat.
Nástroj strace zachycuje a zaznamenává všechna systémová volání provedená procesem a signály přijaté procesem, strace má na starosti zobrazení názvu každého systémového volání spolu s jeho argumenty v závorkách a jeho návratovou hodnotou standardní chybě, volitelně, bude možné jej přesměrovat do souboru.

1. Instalace strace


K instalaci strace musíme spustit jeden z následujících příkazů:
 sudo apt install strace (Debian nebo Ubuntu) yum install strace (RedHat nebo CentOS) dnf install strace (Fedora)
V případě, že program spadne nebo se chová neočekávaným způsobem, bude možné přistupovat k systémovým voláním, abyste získali představu o tom, co se přesně stalo během jeho provádění.

Systémová volání lze kategorizovat do různých událostí: události související se správou procesů, události, které berou soubor jako argument, ty, které zahrnují sítě, přidělení paměti, signály, IPC a také systémová volání související s deskriptory souborů.

2. Jak řešit problémy s procesy v Linuxu pomocí příkazů strace


Dále uvidíme různé příkazy strace k vyřešení různých procesních problémů, které mohou nastat v Linuxu.

Trasovací systém volá se straceTato volba nám umožňuje sledovat všechna systémová volání provedená příkazem df, proto provádíme následující:

 strace df -h

Na tomto výstupu můžeme vidět různé typy systémových volání provedených příkazem df, například jedno z nich je:

 otevřeno (" / etc / ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
Kde:
  • Otevřít: Je to typ systémového volání
  • Je to argument systémového volání: "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC
  • 3: Je to návratová hodnota systémového volání

Sledujte procesy Linux PIDPokud již v systému běží proces, bude možné jej dohledat prostřednictvím jeho PID následovně:

 sudo strace -c -p 465
Tím se obrazovka zaplní nepřetržitým výstupem, který ukazuje, že procesem probíhá systémová volání. Na konci stiskneme klávesy Ctrl + C.

Získejte souhrn procesu LinuxuPomocí parametru -c bude možné generovat zprávu o celkovém čase, hovorech a chybách pro každé systémové volání, proto provedeme následující syntaxi:

 sudo strace -c -p (PID)

Během systémového volání vytiskněte ukazatel instrukcí. Volba -i zobrazuje ukazatel instrukce v době každého systémového volání provedeného programem.

 sudo strace -i df -h

Zobrazit denní dobu pro každý výstupní řádek trasováníSe strace je možné vytisknout denní dobu pro každý řádek ve výstupu trasování pomocí příznaku -t:

 sudo strace -t df -h

Zobrazte čas tisku strávený na systémových hovorechAbychom ukázali časový rozdíl mezi začátkem a koncem každého systémového volání provedeného programem, musíme použít volbu -T:

 sudo strace -T df -h

Sledujte konkrétní hovoryPříkaz trace = write je známý jako kvalifikovaný výraz, kde trace je kvalifikátor (ostatní zahrnují signál, zkratka, podrobná, nezpracovaná, čtení nebo zápis). V tomto případě zadáte hodnotu kvalifikátoru. Následující příkaz zobrazí v reálném čase volání systému k vytištění výstupu df na standardní výstup:

 sudo strace -e trace = zapisovat df -h

Některé další příkazy, které můžeme použít, jsou:

 sudo strace -e trace = otevřít, zavřít df -hsudo strace -e trace = otevřít, zavřít, číst, zapisovat df -hsudo strace -e trace = vše df -h

Systémová volání na základě podmínkyTento příkaz lze použít ke sledování všech systémových volání, která zahrnují správu procesů, provedeme následující:

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

Nyní, abychom sledovali všechna systémová volání, která jako argument berou název souboru, spustíme následující příkaz:

 sudo strace -q -e trace = soubor df -h

Abychom vysledovali všechna systémová volání, která zahrnují přidělení paměti, provedeme následující řádek:

 sudo strace -q -e trace = paměť df -h

Přesměrovat trasování do výstupního souboruPokud chceme zapsat následné zprávy odeslané do standardní chyby do souboru, použijeme volbu -o. To znamená, že na obrazovku se vytiskne pouze výstup příkazu následovně:

 sudo strace -o df_debug.txt df -h

Tento soubor můžeme vizualizovat spuštěním řádku:

 kočka df_debug.txt

Nasadit výstup ladění stracePokud chceme zobrazit ladicí informace pro nástroj strace, musíme použít příznak -d:

 strace -d df -h

Pomoc s vystopovánímChcete -li zobrazit nápovědu příkazu strace, spustíme následující řádek:

 muž strace

Tak jsme viděli, jak se strace stává další pomocí pro úkoly správy v distribucích Linuxu.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave