Polecenia strace do rozwiązywania problemów z procesami w systemie Linux

Kiedy pod naszą odpowiedzialność mamy maszyny z systemami operacyjnymi Linux, jednym z najbardziej użytecznych i praktycznych sposobów prawidłowego zarządzania każdym ich aspektem jest znajomość różnych narzędzi i poleceń, które służą do ich wdrażania i obsługi.

Tym razem Solvetic opowie o narzędziu wiersza poleceń o nazwie strace i zobaczymy, jak może on stać się praktycznym narzędziem do administrowania systemem operacyjnym.

Co to jest stracestrace to przydatne narzędzie wiersza poleceń do diagnozowania, instruowania i uruchamiania zadań debugowania. Administratorzy systemów uważają strace za praktyczne narzędzie do rozwiązywania problemów z programami, których źródła nie są dostępne, ponieważ nie trzeba ich rekompilować w celu ich śledzenia.
Narzędzie strace przechwytuje i rejestruje wszystkie wywołania systemowe wykonane przez proces oraz sygnały odebrane przez proces, strace jest odpowiedzialne za wyświetlanie nazwy każdego wywołania systemowego wraz z jego argumentami w nawiasach i jego wartością zwracaną do standardowego błędu, opcjonalnie, możliwe będzie przekierowanie go do pliku.

1. Instalacja strace


Aby zainstalować strace musimy wykonać jedno z poniższych poleceń:
 sudo apt install strace (Debian lub Ubuntu) yum install strace (RedHat lub CentOS) dnf install strace (Fedora)
W przypadku awarii programu lub jego nieoczekiwanego zachowania, będzie można uzyskać dostęp do wywołań systemowych, aby zorientować się, co dokładnie wydarzyło się podczas jego wykonywania.

Wywołania systemowe można podzielić na różne zdarzenia: te związane z zarządzaniem procesami, te, które przyjmują plik jako argument, te, które dotyczą sieci, alokacji pamięci, sygnałów, IPC, a także wywołania systemowe związane z deskryptorami plików.

2. Jak rozwiązywać problemy z procesami w systemie Linux za pomocą poleceń strace


Następnie zobaczymy różne polecenia strace, które rozwiążą różne problemy procesowe, które mogą pojawić się w Linuksie.

Śledź wywołania systemowe za pomocą straceTa opcja pozwala nam śledzić wszystkie wywołania systemowe wykonane przez polecenie df, w tym celu wykonujemy następujące czynności:

 strace df -h

Na tym wyjściu możemy zobaczyć różne typy wywołań systemowych wykonywanych przez polecenie df, na przykład jednym z nich jest:

 otwarte ("/ etc / ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
Gdzie:
  • Otwarte: jest to rodzaj wywołania systemowego
  • Jest to argument wywołania systemowego: "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC
  • 3: Jest to wartość zwrotna wywołania systemowego

Śledź procesy PID LinuksaJeśli proces jest już uruchomiony w systemie, będzie można go prześledzić poprzez jego PID w następujący sposób:

 sudo strace -c -p 465
Spowoduje to wypełnienie ekranu ciągłym wyjściem, które pokazuje, że wywołania systemowe są wykonywane przez proces, aby zakończyć, naciśnij klawisze Ctrl + C.

Uzyskaj podsumowanie procesu LinuksaZa pomocą parametru -c będzie można wygenerować raport całkowitego czasu, wywołań i błędów dla każdego wywołania systemowego, w tym celu wykonamy następującą składnię:

 sudo strace -c -p (PID)

Wyświetlaj wskaźnik instrukcji podczas wywołania systemowego. Opcja -i wyświetla wskaźnik instrukcji w momencie każdego wywołania systemowego wykonanego przez program.

 sudo strace -i df -h

Pokaż godzinę dla każdej linii wyjściowej śledzeniaDzięki strace możliwe jest wydrukowanie czasu dnia dla każdego wiersza w wyjściu trace, używając flagi -t:

 sudo strace -t df -h

Wyświetl czas drukowania spędzony na wywołaniach systemowychAby pokazać różnicę czasu między początkiem a końcem każdego wywołania systemowego wykonanego przez program, musimy użyć opcji -T:

 sudo strace -T df -h

Śledź konkretne połączeniaPolecenie trace = write jest znane jako wyrażenie kwalifikowane, gdzie trace jest kwalifikatorem (inne to signal, skrót, verbose, raw, read lub write).W takim przypadku wpisujesz wartość kwalifikatora. Następujące polecenie wyświetla w czasie rzeczywistym wywołania systemowe w celu wydrukowania wyjścia df na standardowe wyjście:

 sudo strace -e ślad = napisz df -h

Niektóre dodatkowe polecenia, których możemy użyć to:

 sudo strace -e trace = otwórz, zamknij df -hsudo strace -e trace = otwórz, zamknij, czytaj, pisz df -hsudo strace -e trace = wszystko df -h

Wykreślanie wywołań systemowych na podstawie warunkuTo polecenie może służyć do śledzenia wszystkich wywołań systemowych, które obejmują zarządzanie procesami, wykonamy następujące czynności:

 sudo strace -q -e ślad = proces df -h

Teraz, aby prześledzić wszystkie wywołania systemowe, które przyjmują nazwę pliku jako argument, uruchomimy następujące polecenie:

 sudo strace -q -e ślad = plik df -h

Aby prześledzić wszystkie wywołania systemowe, które obejmują alokację pamięci, wykonamy następujący wiersz:

 sudo strace -q -e ślad = pamięć df -h

Przekieruj ślad do pliku wyjściowegoJeśli chcemy zapisać do pliku komunikaty uzupełniające wysłane do standardowego błędu, użyjemy opcji -o. Oznacza to, że tylko dane wyjściowe polecenia są wyświetlane na ekranie w następujący sposób:

 sudo strace -o df_debug.txt df -h

Możemy zwizualizować ten plik, wykonując linię:

 kot df_debug.txt

Wdróż dane wyjściowe debugowania straceJeśli chcemy wyświetlić informacje debugowania dla narzędzia strace, musimy użyć flagi -d:

 strace -d df -h

Pomoc w śledzeniuAby wyświetlić pomoc polecenia strace, wykonamy następujący wiersz:

 człowiek strace

W ten sposób widzieliśmy, jak strace staje się jeszcze jedną pomocą w zadaniach zarządzania w dystrybucjach Linuksa.

wave wave wave wave wave