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ć?


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

@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.


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


+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,

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.