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) = 3Kde:
- 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 465Tí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.