이름과 일치하는 모든 프로세스를 종료하는 방법은 무엇입니까?


260

아마로라는 단어가 포함 된 모든 프로세스를 죽이고 싶다고 가정 해 봅시다. 실행하려는 명령을 인쇄 할 수 있습니다. 그러나 실제로 쉘이 어떻게 실행하도록합니까? 즉.

ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'
Output:
kill -9 3052
kill -9 3071
kill -9 3076
kill -9 3077
kill -9 3079
kill -9 3080
kill -9 3082
kill -9 3083
kill -9 3084
kill -9 3085
kill -9 3086
kill -9 3087
kill -9 3088
kill -9 3089
kill -9 4031

| sh -x나머지 명령 줄 뒤에 추가 하시겠습니까?
Jonathan Leffler 2016 년

7
결코 이제까지 사용하지 kill -9: [1] [1] 프로세스 참조 [프로세스 관리]에 mywiki.wooledge.org/... ...
프레드릭 Pihl

위의 주석에 kill -9는 나쁜 생각 일뿐 만 아니라 이름을 통해 여러 프로세스를 죽이려고한다는 사실을 덧붙이십시오. 프로세스 이름에 고유 한 것이 없으므로 식별하기에 적합하지 않습니다.
Raul-

그것도 amarokx프로세스를 죽일 것인가 ? 나는 pkill vi, supervisorctl단어에 'vi'를 포함하는 것을 죽 입니다.
Gank

4
사용하지 않는 것에 대한 기사 -9는 도움이되지 않습니다 -사람들이 그것을 사용하지 않아야하는 이유에 대한 더 나은 정보가 있습니까? 그냥 "그것을 사용하는 사람들을 해고하지 말아라"라고 말합니다; 하지만 다른 곳에서 본 kill -9 {pid}것은 무언가를 죽이는 것입니다.
dwanderson

답변:


437

에서 man 1 pkill

-f     The pattern is normally only matched against the process name.
       When -f is set, the full command line is used.

예를 들어 다음과 같은 줄을 보면 ps aux:

apache   24268  0.0  2.6 388152 27116 ?        S    Jun13   0:10 /usr/sbin/httpd
apache   24272  0.0  2.6 387944 27104 ?        S    Jun13   0:09 /usr/sbin/httpd
apache   24319  0.0  2.6 387884 27316 ?        S    Jun15   0:04 /usr/sbin/httpd

pkill -f옵션을 사용하여 모두 죽일 수 있습니다.

pkill -f httpd

1
나는 이것이이 질문의 주제를 다루지 않는다는 것을 알고 있지만, 당신이하려는 일을하는 대안적이고 짧은 방법을 보여줍니다.
팀 비 엘라와

19
강도를 높이 -9려면 끝에 추가 하십시오!
mlissner

그것도 httpdx프로세스를 죽일 것인가 ? 나는 pkill vi, supervisorctl단어에 'vi'를 포함하는 것을 죽 입니다.
Gank

최고 - 우분투 18.04.1 LTS
Salathiel 만들어진 Genese

대소 문자를 구분 일치를 사용할 -i처럼 pkill -fi wine. 전후를 확인하려면을 사용하십시오 ps uax | grep -i wine.
vulcan raven

207
ps aux | grep -ie amarok | awk '{print $2}' | xargs kill -9 

xargs (1) : xargs-인수 목록을 구성하고 유틸리티를 실행합니다. 도움 당신은 같은 인수에 파이프 할 때 kill또는 ls정도에.


3
xargs 언급에 대한 요점-이 모든 pgrep / pkill 항목은 모두 훌륭하지만 xargs는 범용 리눅스 툴이며 모든 리눅스 / 유닉스에서 표준입니다.
chrisdowney 12

4
"kill : 그러한 프로세스 없음"
Cerin

3
Cerin은 이미 완료된 grep 프로세스를 종료하려고하기 때문입니다. 괜찮습니다.
Costi Muraru

6
grep 프로세스 캡처를 피하기위한 약간의 트릭이 있습니다. ps aux | grep -ie [a] marok | awk '{print $ 2}'| xargs kill -9
RCross

8
grep을 걸러 내기 위해 또 다른 grep 호출을 추가 할 수 있습니다 (읽기 / 기억하기가 더 쉽다) ps aux | grep -ie amarok | grep -v grep | awk '{print $2}' | xargs kill -9 ( grep -v약자 grep --invert)
driftcatcher

47

사용하다 pgrep

kill -9 $(pgrep amarok)

26
심지어 eleganter :pkill -9 amarok
글렌 잭맨

1
pkill은 더 많은 파이프 나 프로세스를 만들지 않고 "단어 <word>"를 포함하는 모든 프로세스를 처리합니다. pgrep가 필요없는 전체 프로세스 이름 검색에 대해서는 -f 옵션을 참조하십시오.
Tim Bielawa

2
pkill은 기본적으로 프로세스 이름에서 부분 일치를 허용합니다. 이 명령은 amarok2가있는 경우이를 종료합니다. 정확한 이름을 지정하려면 -x 또는 -f를 사용하십시오.
user79878

pgrep와 일치하지 않으면 실패합니다
alfredocambera

이름 일치 사용kill -9 $(pgrep -f amarok)
cinatic

27

이를 수행하는 안전한 방법은 다음과 같습니다.

pkill -f amarok

1
이것에 추가하기 위해 -l플래그를 추가했습니다 . 나는 실제로 별명 pkill을 지정 하여 pkill -fl비슷한 것을 실행할 수 pkill jboss있으며 방금 죽인 프로세스를 뱉어냅니다.
nland

그것도 amarokx프로세스를 죽일 것인가 ? 나는 pkill vi, supervisorctl단어에 'vi'를 포함하는 것을 죽 입니다.
Gank

이것이 최상위 (Tim 's) 답변과 어떻게 다릅니 까? 예제 이름과 일치합니다. 그렇지 않으면 동일하게 보입니까? @ndland pkill: invalid option -- 'l'-procps-ng에서 pkill 3.3.12
Xen2050

18

이 명령 killall이 정확히 필요한 것 같습니다. 이 명령은 "이름 별 킬 프로세스"라고하며 사용하기 쉽습니다.

killall chrome

이 명령은 Chrome의 모든 프로세스를 종료합니다. 다음은 killall 명령에 대한 링크입니다.

http://linux.about.com/library/cmd/blcmdl1_killall.htm

이 명령이 도움이 되길 바랍니다.


이것은 전체 명령 행이 아닌 이름으로 만 일치합니다. 검색 ps aux결과와
정확히

12

pkill -x는 프로세스 이름과 정확히 일치합니다.

pkill -x amarok

pkill -f는 비슷하지만 정규 표현식 패턴을 허용합니다.

다른 매개 변수가없는 pkill (예 : -x, -f)은 프로세스 이름에서 부분 일치를 허용합니다. 따라서 "pkill amarok"은 amarok, amarokBanana, bananaamarok 등을 죽입니다.

-x가 기본 동작이기를 바란다!


그것도 amarokx프로세스를 죽일 것인가 ? 나는 pkill vi, supervisorctl단어에 'vi'를 포함하는 것을 죽 입니다.
Gank

@Gank, 예, 어딘가에 "amarok"가있는 프로세스 이름.
user79878

amarokx 대신 amarok 만 죽이는 방법?
Gank

1
@ Gank, -x 플래그. pkill -x amarok
user79878

4

명령의 출력을 실행하려면 명령을 안에 넣을 수 $(...)있지만 특정 작업의 경우 killallpkill명령을 살펴보십시오 .


3

백틱으로 모든 것을 둘러싸거나 $ () 안에 넣어서 출력을 하위 프로세스로 평가할 수도 있습니다.

`ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'`

 $(ps aux | grep -ie amarok | awk '{print "kill -9 " $2}')     

3

kill -s 9ps -ef |grep "Nov 11" |grep -v grep | awk '{print $2}' 시도 11 월 11 일의 ps -ef |grep amarok|grep -v grep | awk '{print $2}' 프로세스를 종료하려면 -s 9 amarok라는 단어가 포함 된 프로세스를 종료하려면


0

어쩌면 명령을 실행 파일에 추가하고 + x 권한을 설정 한 다음 실행합니까?

ps aux | grep -ie amarok | awk '{print "kill -9 " $2}' > pk;chmod +x pk;./pk;rm pk

-1

cygwin 또는 부족한 최소 쉘을 사용하는 경우 killall 경우 다음 스크립트를 사용할 수 있습니다.

killall.sh-프로세스 이름으로 죽입니다.

#/bin/bash
ps -W | grep "$1" | awk '{print $1}' | xargs kill --

용법:

$ killall <process name>

나는군요kill: invalid argument f
rosstex

1
함께 -f 교체 시도 -
토니 O'Hagan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.