Wyszukiwanie w witrynie

/proc — pobiera informacje o procesie i sprzęcie systemu Linux


Dzisiaj zagłębimy się w zawartość katalogu /proc, aby lepiej zrozumieć jego funkcjonalności. Należy zauważyć, że katalog /proc jest wspólną funkcją we wszystkich dystrybucjach Linuksa, niezależnie od ich wersji i architektury.

Jednym z błędnych przekonań, które musimy natychmiast wyjaśnić, jest to, że katalog /proc NIE jest konwencjonalnym systemem plików w tradycyjnym znaczeniu tego terminu.

Jest to wirtualny system plików, który zawiera informacje o procesach i inne dane związane z systemem w procfs. Ten system plików jest mapowany do katalogu /proc i montowany podczas procesu uruchamiania systemu.

Co to jest /proc w Linuksie

System plików /proc służy jako interfejs do struktur danych jądra i informacji o czasie wykonywania, który zapewnia zarówno użytkownikom, jak i aplikacjom dostęp do szczegółowych informacji o procesach, konfiguracji systemu, sprzęcie i nie tylko, poprzez udostępnianie te dane poprzez hierarchię plików wirtualnych.

Aby wyświetlić pełną listę plików i katalogów w systemie plików /proc, możesz użyć polecenia ls, jak pokazano.

ls /proc

Nawigacja /proc w systemie Linux

Kiedy przejdziesz do katalogu /proc, zauważysz, że znajduje się tam kilka znajomo brzmiących plików, a następnie cała masa ponumerowanych katalogów, z których każdy odpowiada działającemu procesowi w systemie.

cd /proc
ls

Te ponumerowane katalogi reprezentują procesy, lepiej znane jako identyfikatory procesów (PID), a znajdujące się w nich polecenie, które je zajmuje. Pliki zawierają informacje o systemie, takie jak pamięć (meminfo), informacje o procesorze (cpuinfo) i dostępne systemy plików.

Oto kilka kluczowych plików i katalogów, które napotkasz:

  • /proc/cpuinfo – Wyświetla informacje o procesorach w systemie, takie jak model, szybkość i liczba rdzeni.
  • /proc/meminfo – wyświetla szczegółowe informacje na temat użycia pamięci oraz statystyki zawierające całkowitą ilość pamięci, wolną pamięć i pamięć używaną przez każdy proces.
  • /proc/filesystems – Zawiera listę wszystkich systemów plików obsługiwanych przez jądro.
  • /proc/sys – Wyświetla listę parametrów konfiguracyjnych i wykonawczych jądra.
  • /proc/loadavg – pokazuje średnie obciążenie systemu w różnych odstępach czasu, np. 1, 5 i 15 minut.
  • /proc/self – symboliczny link do własnego katalogu procesu.
  • /proc/stat – Zawiera różnorodne statystyki dotyczące systemu, takie jak liczba uruchomionych procesów, liczba przerwań i ilość czasu spędzonego w każdym stanie procesora.
  • /proc/uptime – Zawiera czas działania systemu.
  • /proc/PID – Zawiera informacje o konkretnym procesie, gdzie PID jest identyfikatorem procesu.

Wyodrębnianie informacji o systemie

/proc/meminfo służy do wyświetlania informacji o wykorzystaniu pamięci i statystyk systemu Linux, które zawierają migawkę różnych wskaźników związanych z pamięcią, które mogą być przydatne do monitorowania wydajności systemu i wykorzystania zasobów .

cat /proc/meminfo

Jak widać, /proc/meminfo zawiera mnóstwo informacji o pamięci twojego systemu, w tym całkowitą dostępną ilość (w kb) i ilość wolną w dwóch górnych linie.

Uruchomienie polecenia cat na dowolnym pliku w /proc spowoduje wyświetlenie jego zawartości. Informacje o dowolnych plikach są dostępne na stronie podręcznika po uruchomieniu:

man 5 /proc/<filename>

Krótko omówię pliki /proc:

  • /proc/cmdline – informacje o wierszu poleceń jądra.
  • /proc/console – Informacje o aktualnych konsolach, w tym o tty.
  • /proc/devices – sterowniki urządzeń aktualnie skonfigurowane dla działającego jądra.
  • /proc/dma – Informacje o aktualnych kanałach DMA.
  • /proc/fb – Urządzenia z buforem ramki.
  • /proc/filesystems – bieżące systemy plików obsługiwane przez jądro.
  • /proc/iomem – Aktualna mapa pamięci systemowej dla urządzeń.
  • /proc/ioports – zarejestrowane regiony portów do komunikacji wejścia-wyjścia z urządzeniem.
  • /proc/loadavg – średnie obciążenie systemu.
  • /proc/locks – pliki aktualnie zablokowane przez jądro.
  • /proc/meminfo – Informacje o pamięci systemowej (patrz przykład powyżej).
  • /proc/misc – Różne sterowniki zarejestrowane dla różnych głównych urządzeń.
  • /proc/modules – Aktualnie załadowane moduły jądra.
  • /proc/mounts – Lista wszystkich wierzchowców używanych przez system.
  • /proc/partitions – szczegółowe informacje o partycjach dostępnych w systemie.
  • /proc/pci – Informacje o każdym urządzeniu PCI.
  • /proc/stat – Zapis lub różne statystyki przechowywane od ostatniego ponownego uruchomienia.
  • /proc/swap – Informacje o przestrzeni wymiany.
  • /proc/uptime – informacje o czasie działania (w sekundach).
  • /proc/version – zainstalowana wersja jądra, wersja gcc i dystrybucja Linuksa.

Wyodrębnianie informacji o procesie

W ponumerowanych katalogach /proc znajdziesz kilka plików i linków. Pamiętaj, że numery tych katalogów odpowiadają PID wykonywanego w nich polecenia.

Na przykład przejście do /proc/ zawiera szczegółowe informacje, takie jak:

  • /proc//cmdline – Argumenty wiersza poleceń używane do uruchomienia procesu.
  • /proc//status – szczegółowe informacje o statusie, w tym statystyki wykorzystania pamięci i procesów.
  • /proc//fd – Dowiązania symboliczne do plików otwieranych przez proces.

Użyjmy przykładu, aby wyświetlić folder o nazwie /proc/12.

cd /proc/12
ls

Jeśli uruchomię:

cat /proc/12/status

Otrzymuję następujące informacje:

Co to oznacza? Cóż, najważniejsza część jest na górze. Z pliku stanu widzimy, że ten proces należy do rcu_tasks_rude_kthread. Jego obecny stan to bezczynność, a ID procesu to oczywiście 12.

Możemy także zobaczyć, kto to uruchamia, ponieważ UID i GID wynoszą 0, co wskazuje, że ten proces należy do root silny> użytkownik.

W dowolnym ponumerowanym katalogu będziesz miał podobną strukturę plików, a najważniejsze z ich opisami są następujące:

  • cmdline – linia poleceń procesu
  • środowisko – zmienne środowiskowe
  • fd – deskryptory plików
  • limity – zawiera informację o ograniczeniach procesu
  • mocowania – powiązane informacje

W numerowanym katalogu zauważysz także kilka linków:

  • cwd – link do aktualnego katalogu roboczego procesu
  • exe – link do pliku wykonywalnego procesu
  • root – link do katalogu roboczego procesu

To powinno pomóc Ci zacząć od zapoznania się z katalogiem /proc. Powinien także zapewniać wgląd w sposób, w jaki wiele poleceń uzyskuje informacje, takie jak uptime, lsof, mount i ps, żeby wymienić tylko kilka.