MC, 20:31 wtorek, 25.09.2012 r.
Ilustracja do artykułu: Linux - Pobieranie numeru PID procesu, czyli polecenia top, htop, ps, pgrep i pidof

Linux - Pobieranie numeru PID procesu, czyli polecenia top, htop, ps, pgrep i pidof

Artykuł ten poświęcam tematowi pobierania numeru Id procesu, czyli PID. Poznamy kilka popularnych metod, w tym zarówno te wymagające interakcji z użytkownikiem, jak i działające przy pomocy jednego prostego wywołania.

Po co komu numer PID?

Można przytoczyć wiele scenariuszy, w których przydatna będzie znajomość numer PID procesu. Pierwszym z brzegu tego dowodem będzie np. zagadnienie zabijania procesów, czy choćby ustalania ich priorytetów, o czym wspominałem w jednym z wcześniejszych artykułów - Linux - Nice i Renice, czyli zarządzanie priorytetami procesów.

Top oraz Htop - metody wymagające interakcji

Najprostsze metody uzyskania numery PID oferują polecenia top i htop (htop jest bardziej rozbudowaną wersją programu top i znajdziemy ją w repozytoriach). Jako że są to programy wymagające współdziałania z użytkownikiem, można wskazać zarówno ich zalety jak i wady. Jeśli chodzi o wady, to na pewno nie będzie można ich optymalnie wykorzystać w sytuacjach, w których w prosty sposób potrzebujemy wiadomości zwrotnej z informacją o PID konkretnego procesu, czyli zastosowania w skryptach zdecydowanie odpadają. Jeśli jednak chodzi o inne operacje na procesach, takie, jakie jak ich zabijanie, zmiana priorytetów etc., to w wygodny sposób będziemy mogli wykonać je już z poziomu tych aplikacji.
Przejdźmy teraz do sposobów niewymagających współpracy z użytkownikiem komputera.

Polecenie ps

Polecenie ps, po przekazaniu odpowiednich parametrów wywołania, wylistuje nam szereg informacji o na temat procesów. Jeśli dołożymy do wywołania polecenie grep, którym przefiltrujemy wyświetloną listę, pod względem nazwy procesu, uzyskamy informacje jedynie o interesujących nas programach. Polecenie takie może przybrać postać podobną do:
ps -e | grep <nazwa procesu>
Flaga -e to prośba o wypisanie wszystkich działających procesów. Spójrzmy na poniższy, konkretny przykład wywołania:
$ ps -e | grep skype
6279 ?00:19:27 skype

Polecenie pgrep

Poprzednie sposoby na uzyskanie numeru PID były nieco okrężne. Mam tu na myśli, że ten numer uzyskiwaliśmy właściwie przy okazji pobierania również innych danych. Ten sposób, oraz kolejny, pozwolą nam uzyskać, tylko i wyłącznie interesujący nas numer Id procesu. Najpierw zajmiemy się komendą pgrep. Przyjmuje ona parametr, jakim jest nazwa procesu. Warto również dołączyć do wywołania flagę -x, co zaowocuje wypisaniem tylko numerów dla dokładnie pasujących nazw procesów.
pgrep -x <nazwa procesu>
Oto prosty przykład:
$ pgrep skype
6279

Polecenie pidof

Bardzo podobnie do polecenia pgrep, działa komenda pidof, której już sama nazwa wskazuje, że służy do uzyskiwania numerów PID wskazanych procesów. Podobnie jak w poprzednim przypadku, musimy przekazać do programu nazwę procesu, którego numer Id chcemy poznać:
pidof <nazwa procesu>
Czyli przykładowo:
$ pidof skype
6279

Komentarze (1)

Imię:
Treść:
Maciek 2017-05-09 09:18:26
Fajne pozdrawiam cieplutko z rodzinkom muj tata sie cieszy ;)