PV090 - užitečné nástroje pro zvládnutí úkolů

Až budete vypracovávat úkoly spočívající většinou v rozchození nějakého programu, může se vám hodit několik užitečných utilit, které už většinou sice znáte, ale možná jste na nějakou pozapomněli. Zmíníme tedy pro jistotu i některé zcela triviální, samozřejmě je možné, že na nějakou zapomeneme.

Bližší údaje o možnostech a spouštění najdete v příslušných manuálových stránkách.

Zjistěte, si co je co

Typ souboru, tedy i to, zda se jedná o binárku či například shellovský skript vám řeknem program file. Pokud chcete vědět, jaké sdílené knihovny používá nějaká binárka, prozkoumejte ji programem ldd. Nevíte-li, v jaké knihovně (programu, .o souboru) je který symbol (funkce), vypíše vám je nm.

Sledujte, co vám program říká

Většina programů buď sama od sebe vypisuje údaje o svém běhu, nebo se dá spouštět s přepínači (-d, -v, -i), které tuto možnost zapnou, případně i nastaví obsažnost těchto hlášek. Ty lze sledovat a odchytávat buď z (chybového) výstupu, nebo zejména v případě daemonů ze souboru, do kterého je zapsal syslog. Najdete je většinou v adresáři /var/log, nejčastěji jde o soubor messages. Vhodným nástrojem ke sledování přicházejících hlášek je tail (-f puštěný na další konzole, třeba i přes grep s vhodným vzorkem pro výběr toho, co vás zajímá).

Sledujte, co program dělá

Chcete-li vědět, co se děje při spuštění nějaké binárky, nemusíte používat hned gdb -- většinu problému s provozem odzkoušených programů vám pomůže odhalit strace. Sleduje systémová volání, takže snadno zjistíte např. s jakými soubory se program snaží pracovat, jak končí pokusy o síťové spojení a podobné věci. Můžete ho napojit i na běžící procesy (-p), sledovat i potomky původního procesu (-f), můžete omezovat, co vám bude hlásit (-e), a mnoho dalších věcí.

Podobným programem je ltrace -- sleduje volání knihovních funkcí.

Sledujte, s čím program pracuje

Vidět, jaké soubory (včetně síťových spojení) daný proces používá vám umožní program lsof, duální k němu je fuser, o síti na vašem počítači vám asi nejvíc řekne netstat.

Sledujte, co se děje na síti

Chcete-li vidět, co běhá po síti, kdo s kým komunikuje, použijte tcpdump. Pokud chcete přímo otestovat chování nějakého serveru, máte v případě textových protokolů nad TCP možnost připojit se telnetem na konkrétní port testované služby a dráždit ji ručně. Mocnějším nástrojem je nc (nikoliv Norton Commander, ale netcat) -- umí na specifikovaném portu i naslouchat a pracuje i nad udp (kromě jiného).

Sledujte, co se děje na vašem počítači

Nezapomínejte ani na notoricky známé (doufejme) prográmky top a ps, ze kterých vidíte, co a jak těžce běží.