Jak zabić proces jednym poleceniem?

18

Chcę zabić proces po znalezieniu identyfikatora w jednym kroku.

Obecnie używam tych dwóch poleceń:

pidof <name>
kill <#number_which_is_result_of_command>

Jak mogę napisać jedno polecenie, aby to zrobić?

Cuil Yahoo
źródło
Jaka skorupa? bash? tcsh? ...
Levon
2
Możesz szukać podstawiania poleceń w dokumentacji powłoki.
deviantkarot
2
Zabijam rzeczy wizualnie za pomocą: xkill. Po prostu wpisz xkill w Terminalu, przesuń kursor na szkodliwą aplikację i naciśnij przycisk. Brak
1
@arochester To działa, ale jest ograniczone do środowisk GUI, killróżnorodność poleceń będzie działać z konsoli (plus może być zautomatyzowany w skryptach itp.). Nadal dobrze, aby ludzie byli xkillpewni tej opcji.
Levon
Jeśli jedna z poniższych odpowiedzi rozwiązała problem, rozważ zaakceptowanie go, klikając znacznik wyboru obok odpowiedzi. Nagrodzi obie strony pewnymi punktami powtórzeń i oznaczy ten problem jako rozwiązany.
Levon

Odpowiedzi:

18

Możesz także zabijać procesy według nazwy:

Przykład:

pkill vim  # kill all processes containing vim in the process name
fromnaboo
źródło
@Levon Czy jesteś pewien? Wskazówka: Czy to zadziała, jeśli zmienisz pkillna kill?
Mikel
To nie zadziała, Levon. kill -9 zabija proces przez jego PID, a pkill -9 zabija proces przez jego nazwę.
fromnaboo
6
Bez -olub -n, pkillzabija również wszystkie procesy dopasowania, a nie tylko jeden.
Mikel
3
-1 za sugerowanie użycia SIGKILL (-9), co jest złą ekologią procesu. Dzięki SIGKILL dane w tym procesie nie są usuwane, co może spowodować uszkodzenie danych.
Arcege
6
Sugerowanie killallto BARDZO ZŁA PORADA. Robi bardzo różne rzeczy w zależności od tego, na którym Unixie / Linuksie się znajdujesz.
MikeyB
13

Aby odpowiedzieć na określone pytanie za pomocą zestawu poleceń, użyj:

kill `pidof <name>`

Ponieważ pidof <name>daje PID procesu, który próbujesz zabić, możesz go używać z przełącznikami wiersza poleceń, takimi jak -9itp.

Testowane z bashi tcsh.

Levon
źródło
9
BTW, kill $(pidof <name>)jest bardziej kompatybilny (POSIX) i może być używany wewnątrz innego bloku zastępowania poleceń .
Rudolf Adamkovic
@RudolfAdamkovic Zgadzam się, że jest to lepsza opcja, na pewno w skryptach. Jednak w przypadku szybkiego wpisywania polecenia korzystanie z backticks jest łatwiejsze .. plus działa z oboma typowymi powłokami (bash i tcsh) .. Nie mogłem zmusić $wersji do współpracy z tcsh.
Levon
Po prostu spróbowałem tcshi masz rację. Nie wiedziałem tego. Dzięki za informacje!
Rudolf Adamkovic
7

Powinien być komentarz na temat Levona, ale brakuje mi tutaj przedstawiciela:

Opowiadając o dyskusji w zaakceptowanej odpowiedzi na to pytanie: /server/397762/how-to-make-folders-00-99-w-a-single-command-in-ubuntu

Powiedziałbym, że może być lepiej (lub przynajmniej użyteczne / bardziej zrozumiałe dla późniejszych użytkowników) do uruchomienia

kill $(pidof <name>)

Dalsze odniesienia do $ () vs. ``: http://mywiki.wooledge.org/BashFAQ/082

Ghillie Dhu
źródło
+1 za szczególnie dolny link. Otrzymałem podobny komentarz od @RudolfAdamkovic, patrz moja odpowiedź do niego. Czy znasz wersję tego, która działa z tcsh? (Nadal uważam, że cofanie łatwiej jest pisać na szybkim poleceniu w powłoce :)
Levon
Pracowałem tylko z bash (w systemie Linux) i ksh (w systemie HP-UX); przepraszam, jeszcze nie skrzyżowałem ścieżek z tcsh.
Ghillie Dhu,
1

Możesz także użyć killallpolecenia, aby zabić dany proces.

killall vim
Karthikeyan.RS
źródło