Chcę wyjść z procesu za pomocą wiersza polecenia, ale nie mogę przywołać polecenia, aby sprawdzić identyfikator procesu. Czy ktoś to wie?
źródło
Chcę wyjść z procesu za pomocą wiersza polecenia, ale nie mogę przywołać polecenia, aby sprawdzić identyfikator procesu. Czy ktoś to wie?
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ż pidof
najpierw 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 pidof
nie 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 processname
któ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ć xkill
do zabicia (wywołaj, xkill
a następnie kliknij okno).
Należy przyjrzeć się pgrep
i 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
Możesz uruchomić ps -A
w terminalu, aby wyświetlić wszystkie procesy (wraz z ich identyfikatorami procesów), które są obecnie uruchomione.
grep
wyszukiwania nazwy określonego procesu:ps -A | grep 'my name'
Miałem również podobny problem. Użyłem
pstree -p
; pokazało mi to bieżące uruchomione procesy, w tym identyfikatory procesów.źródło
pidof
. Problemman pidof
ze szczegółami.źródło
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 tylkopgrep -l
dla wszystkich pidOczywiście możesz wyszukać konkretny program (lub jego część). (tzn.
pgrep -lw firef
prawdopodobnie wyświetli coś takiego jak „4567 Firefox”).źródło
pstree -psH $(pgrep prgram_name)
byłoby lepiej w pierwszym przypadku?Ta odpowiedź od @Ben na zduplikowane pytanie rozwiązała mój problem:
Rozważ użycie
top
polecenia w terminalu.przez górę człowieka
źródło