Articles

9 sposobów na znalezienie ID procesu programu w Linuksie

pracując na systemie Linux, czasami musisz dowiedzieć się, które procesy są uruchomione i które PID lub PPID jest z nim powiązane. Może być używany do wielu celów.

zasadniczo szukamy PID w Linuksie, aby zabić nie reagujący program, co może być wykonane przez Menedżera zadań GUI, ale CLI jest najbardziej efektywnym sposobem obsługi nie reagujących programów.

jest to lepsze niż GUI, ponieważ czasami narzędzia oparte na GUI mogą nie pokazywać wciąż działającego ukrytego procesu.,

w tym samouczku pokażemy Ci, jak znaleźć identyfikator procesu (PID) programu działającego na wiele sposobów w Linuksie.

Co to jest identyfikator procesu (PID)

PID odnosi się do identyfikatora procesu, który jest powszechnie używany przez większość jąder systemu operacyjnego, takich jak Linux, Unix, MacOS i Windows.

jest to unikalny identyfikator, który jest automatycznie przypisywany do każdego procesu podczas jego tworzenia. Proces jest uruchomioną instancją programu.

co to jest identyfikator procesu nadrzędnego (PPID)

proces nadrzędny to proces, który utworzył jeden lub więcej procesów potomnych., Każdy proces potomny otrzymuje identyfikator procesu rodzicielskiego (ppid), a proces rodzicielski zabija dziecko po zakończeniu operacji.

możesz być zainteresowany zapoznaniem się z poniższymi artykułami, ponieważ są one związane z tym tematem.

  • Jak dowiedzieć się, który numer portu jest używany przez proces w Linuksie
  • 3 proste sposoby na zabicie lub zakończenie procesu w Linuksie

za każdym razem, gdy identyfikator procesu jest zmieniany na wszystkie procesy z wyjątkiem init. init jest zawsze pierwszym procesem w systemie i przodkiem wszystkich innych procesów. Posiada PID 1.,

domyślną maksymalną wartością pid jest32,768. Można to sprawdzić uruchamiając następujące polecenie

cat /proc/sys/kernel/pid_max na komputerze.

32,768 to maksymalna wartość w systemach 32-bitowych, ale może być ustawiona na dowolną wartość do 2^22 (około 4 milionów) w systemach 64-bitowych.

możesz zapytać, po co nam takie Pidy? Dzieje się tak, ponieważ pid nie mogą być natychmiast ponownie użyte i aby zapobiec potencjalnym błędom.,

można znaleźć PID procesów uruchomionych w systemie za pomocą następujących dziewięciu metod, takich jak polecenie pidof, polecenie pgrep, polecenie ps, polecenie pstree, polecenie ss, polecenie netstat, polecenie lsof, polecenie fuser i polecenie systemctl.

można to osiągnąć za pomocą poniższych dziewięciu metod.

  • pidof: pidof-Znajdź ID procesu uruchomionego programu.
  • pgrep: pgre-wyszukuje lub sygnalizuje procesy na podstawie nazwy i innych atrybutów.,
  • ps: ps-zgłoś migawkę bieżących procesów.
  • pstree: pstree – wyświetla drzewo procesów.
  • ss: ss jest używany do zrzutu statystyk gniazd.
  • netstat: netstat wyświetla listę otwartych gniazd.
  • lsof: lsof – wyświetla listę otwartych plików.,
  • fuser: fuser – lista identyfikatorów procesów wszystkich procesów, które mają jeden lub więcej otwartych plików
  • systemctl: systemctl – Kontrola systemu systemd i Menedżera usług

aby to udowodnić, znajdziemy identyfikator procesu Apache. Upewnij się, że wpisz nazwę procesu zamiast nas.

1) Jak znaleźć ID procesu (PID) w Linuksie, używając polecenia pidof?

polecenie pidof służy do znalezienia ID procesu uruchomionego programu. Wypisuje te identyfikatory na standardowe wyjście., W związku z tym, że nie jesteśmy w stanie sprostać wymaganiom naszych klientów, nie jesteśmy w stanie sprostać ich wymaganiom.

# pidof apache2
2594 2365 2364 2363 2362 2361

w powyższym wyjściu możesz mieć trudności ze zidentyfikowaniem identyfikatora procesu, ponieważ wyświetla on wszystkie PID (W tym rodzica i dziecka) względem nazwy procesu.

musimy więc znaleźć Proces nadrzędny PID( PPID), którego szukamy. To będzie pierwsza liczba. W moim przypadku jest to 3754 I jest posortowane w porządku malejącym.

2) Jak przeszukiwać ID procesu (PID) w Linuksie, używając komendy pgrep?,

polecenie pgrep sprawdza aktualnie uruchomione procesy i wyświetla identyfikatory procesów, które spełniają kryteria wyboru.

# pgrep apache2236123622363236423652594

powyższe wyjście jest podobne do wyjścia polecenia 'pidof', ale posortowało wyniki w porządku rosnącym, co wyraźnie pokazuje, że proces nadrzędny PID stoi na last.In mój przypadek to 3754.,

Uwaga: Identyfikacja ID procesu nadrzędnego może być problematyczna przy użyciu polecenia 'pidof’& 'pgrep', ponieważ każdy proces ma pojedynczy PPID i wiele PID, które nie pokazują różnicy między nimi.

3) Jak zlokalizować ID procesu (PID) w Linuksie, używając polecenia pstree?

polecenie pstree pokazuje uruchomione procesy jako format podobny do drzewa, który jest bardzo wygodnym sposobem wyświetlania hierarchii procesów i sprawia, że wyjście jest bardziej atrakcyjne wizualnie., Jeśli w poleceniu pstree podano nazwę użytkownika, to pokazuje on cały proces należący do danego użytkownika.

pstree wizualnie łączy identyczne gałęzie, umieszczając je w nawiasach kwadratowych i poprzedzając je liczbą powtórzeń.

# pstree -p | grep "apache2" |-
-+-apache2(2361) | |-apache2(2362) | |-apache2(2363) | |-apache2(2364) | |-apache2(2365) | `-apache2(2594)

aby uzyskać tylko proces nadrzędny, użyj następującego formatu.

# pstree -p | grep "apache2" | head -1 |-
-+-apache2(2361)

polecenie’pstree' jest znacznie lepsze niż polecenie 'pidof’& 'pgrep', ponieważ oddziela procesy nadrzędne i podrzędne, które nie są przez nie możliwe.,

4) Jak znaleźć identyfikator procesu (PID) w Linuksie, używając polecenia ps?

polecenie ps wyświetla informacje o wyborze aktywnych procesów, które obejmują ID procesu (pid = PID), Terminal skojarzony z procesem( TTY), skumulowany czas procesora w formacie HH: mm: ss (time=TIME) I nazwę wykonywalną (UCMD=CMD). Wyjście jest domyślnie niesortowane.

Identyfikator procesu nadrzędnego (PPID) można łatwo zidentyfikować na podstawie daty rozpoczęcia procesu z powyższego wyjścia., W naszym przypadku proces 'Apache2′ rozpoczął się na December 11th, który jest procesem nadrzędnym, a pozostałe procesem potomnym. W naszej ofercie znajdziecie Państwo również:

5) Jak znaleźć identyfikator procesu (PID) w Linuksie, używając polecenia ss?

polecenie ss służy do zrzutu statystyk gniazd. Umożliwia wyświetlanie informacji podobnych do netstat. Może wyświetlać więcej informacji o TCP i stanie niż inne narzędzia.

może wyświetlać statystyki dla wszystkich rodzajów gniazd, takich jak PACKET, TCP, UDP, DCCP, RAW, domena Unix, itp.,

# ss -tnlp | grep apache2LISTEN 0 128 :::80 :::* users:(("apache2",pid=3319,fd=4),("apache2",pid=3318,fd=4),("apache2",
,fd=4))

6) Jak znaleźć identyfikator procesu (PID) w Linuksie, używając polecenia netstat?

polecenie netstat jest używane do drukowania połączeń sieciowych, tabel routingu, statystyk interfejsu, połączeń maskaradowych i członkostwa multicast. Domyślnie netstat wyświetla listę otwartych gniazd.

Jeśli nie podasz żadnej rodziny adresów, wtedy zostaną wydrukowane aktywne gniazda wszystkich skonfigurowanych rodzin adresów. Ten program jest przestarzały. Następcą netstata jest ss.

# netstat -tnlp | grep apache2tcp6 0 0 :::80 :::* LISTEN 

7) Jak znaleźć identyfikator procesu (PID) w Linuksie, używając polecenia lsof?,

polecenie lsof służy do wyświetlania otwartych plików. Polecenie Linux lsof wyświetla informacje o plikach, które są otwierane przez procesy uruchomione w systemie.

8) Jak znaleźć identyfikator procesu (PID) w Linuksie, używając polecenia fuser?

narzędzie fuser zapisuje na standardowe wyjście identyfikatory procesów uruchomionych w systemie lokalnym, które mają otwarty jeden lub więcej nazwanych plików.

# fuser -v 80/tcp USER PID ACCESS COMMAND80/tcp: root 
www-data 3318 F.... apache2 www-data 3319 F.... apache2

9) Jak znaleźć identyfikator procesu (PID) w Linuksie, używając polecenia systemctl?

polecenie systemctl służy do sterowania menedżerem usług systemd., Jest to zamiennik starego systemu zarządzania SysVinit, a większość nowoczesnych systemów operacyjnych Linux zostały przeniesione do systemd.