Jakie polecenie terminalu służy do znajdowania identyfikatora procesu


12

Chcę wyjść z procesu za pomocą wiersza polecenia, ale nie mogę przywołać polecenia, aby sprawdzić identyfikator procesu. Czy ktoś to wie?

Odpowiedzi:


13

Komenda służąca do znalezienia identyfikatora procesu (biorąc pod uwagę jego nazwę) to pidof. Ponieważ jednak Twoim celem jest zabicie procesu, istnieją lepsze / łatwiejsze sposoby niż pidofnajpierw znalezienie jego pid:

Zakładając, że proces, który chcesz zabić, jest jednoznacznie identyfikowany przez jego nazwę (lub chcesz zabić wszystkie procesy o tej nazwie), nie musisz znać jego pid. Możesz po prostu zrobić killall processname.

Jeśli istnieje wiele procesów o tej samej nazwie, ale chcesz zabić tylko jeden z nich, użycie pidofnie pomoże ci zbyt wiele, ponieważ da ci pid, ale nie dostarczy żadnych informacji, aby określić, który z pids należy do procesu, który naprawdę chcesz zabić.

W tym przypadku możesz zrobić, ps aux | grep processnamektóry pokaże wszystkie procesy o podanej nazwie, a także konsolę, na której działają (jeśli dotyczy) oraz argumenty, z którymi zostały wywołane, co, miejmy nadzieję, pozwoli ci zidentyfikować proces, którego szukasz .

Jeśli proces otworzył jakieś X-Windows, możesz również użyć xkilldo zabicia (wywołaj, xkilla następnie kliknij okno).


7

Należy przyjrzeć się pgrepi pkill, dwa bardzo poręczne i potężne narzędzia, które znajdują się w większości systemów Linux i UNIX.

$ apropos pgrep
pgrep (1) - look up or signal processes based on name and other attributes

5

Możesz uruchomić ps -Aw terminalu, aby wyświetlić wszystkie procesy (wraz z ich identyfikatorami procesów), które są obecnie uruchomione.


Potok do grepwyszukiwania nazwy określonego procesu:ps -A | grep 'my name'
Gabriel Staples

2

Miałem również podobny problem. Użyłem pstree -p; pokazało mi to bieżące uruchomione procesy, w tym identyfikatory procesów.


ciekawe polecenie
jumpnett 26.04.13


1

Moim ulubionym jest pstree -p | grep $(program_name). To faktycznie pomija proces, wyróżnia go i pokazuje pid w nawiasie.

Moim kolejnym ulubionym (szczególnie podczas programowania i potrzebującym wszystkich pid z procesu) jest pgrep -law "". Daje to dosłownie wszystkie uruchomione pid, po których następuje aplikacja (z bezwzględną ścieżką).

Można to zmniejszyć do pgrep -lw ""pid, po którym następuje nazwa programu lub nawet tylko pgrep -ldla wszystkich pid

Oczywiście możesz wyszukać konkretny program (lub jego część). (tzn. pgrep -lw firefprawdopodobnie wyświetli coś takiego jak „4567 Firefox”).


Nie pstree -psH $(pgrep prgram_name)byłoby lepiej w pierwszym przypadku?
muru

Tak, to też działa. Możesz stworzyć dla tego alias. Po prostu użyłem $ () do przedstawienia nazwy programu; Myślę, że wpisanie $ (nazwa pgrep) jest trochę denerwujące ze względu na znak dolara, ale myślę, że alias tego może być pomocny.
dylnmc,

0

Ta odpowiedź od @Ben na zduplikowane pytanie rozwiązała mój problem:

Rozważ użycie toppolecenia w terminalu.

   The  top  program  provides  a dynamic real-time view of a running
   system.  It can display system summary information as  well  as  a
   list  of processes or threads currently being managed by the Linux
   kernel.  The types of system summary  information  shown  and  the
   types,  order  and size of information displayed for processes are
   all user configurable and that configuration can be  made  persis‐
   tent across restarts.

przez górę człowieka

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.