/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.