여러 프로세스를 종료하는 방법


21

죽일 프로세스의 PID를 찾으려면 :

pgrep <process command>

그런 다음 kill 명령을 사용하여 반환 된 PID를 죽입니다. pgrep <process command>

kill <PID>

이 명령들을 하나로 결합 할 수 있습니까 pgrep <process command>? 또는 명령 이름으로 여러 프로세스를 종료하는 방법이 있습니까?

같은 것 : kill(pgrep <name of process>)


3
시도 했습니까 pkill? 또는을 사용할 수도 있습니다 xargs.
MatthewRock

1
매뉴얼 페이지는 이와 같은 것들에도 좋습니다. 종종 명령 사용법을 알려줄뿐만 아니라 관련 명령에 대해서도 알려줍니다. 이 경우 pgrep맨 페이지는 pkill모든 곳을 언급 합니다 (두 명령이 동일한 패키지에서 제공됨).
Patrick

답변:


27

pkill을 사용할 수 있습니다 :

pkill httpd

프로세스 대체를 사용하고 싶을 수도 있습니다 (확실하지는 않지만).

kill $(pgrep command)

그리고 당신은 사용할 수 있습니다 xargs:

pgrep command | xargs kill

4
나는 대답에서 비슷한 일을했으며 경쟁 조건을 도입 한 것이 나에게 지적되었다. pgrep및에 대한 호출 사이에서 프로세스 ID가 무효화 될 수 있습니다 kill. 그냥 사용하십시오 pkill.
Kusalananda

3
@ Kusalananda는 pkill프로세스 목록을 가져오고 실제로 신호를 보내는 사이에도 동일한 일이 발생할 수 있습니다 .이 경우에는보기가 더 어렵습니다.
hobbs

1
kill $(ps|head -1)경쟁 조건을 피하기 위해 반복되는 답변을 작성하려고 했지만 실제로 피할 수있는 방법은 없습니다. 프로세스는 파이프 라인의 어느 시점에서나 죽을 수 있습니다.
Ross Presser

일부 프로그램은 둘 이상의 인스턴스가 실행 중일 수 있으며 모든 프로그램을 종료하지 않을 수도 있으므로 pkill에주의하십시오. pgrep을 먼저 실행하면 pgrep과 pkill (race)을 실행하는 시간 사이에 다른 pgrep이 시작되지 않는 한 도움이됩니다.
Joe

1
C 프로그램조차도 경쟁 조건을 피할 수 없으며 창은 더 작습니다. 실제로 원자 적으로 수행하는 유일한 방법은 프로세스를 이름별로 죽이는 시스템 호출을 추가하는 것입니다. 그러나 프로세스 ID는 일반적으로 매우 빨리 재사용되지 않으므로 위험이 거의 없습니다.
Barmar

17

당신은 사용할 수 있습니다 killall아니라, 예를 들면로

killall firefox

SIGTERM모든 firefox프로세스 로 전송 합니다.


8
참고 killall확실 설명서를 확인하기 위해 리눅스가 아닌 시스템 제조업체에 있다면 - 다른 유닉스 시스템에서 다른 의미를 가지고있다.
Random832

killall -KILL firefoxsooo 보람을 느낄 수 있습니다 .
파이프

휴대 killall할 수없는 이유는 내가 그것을 사용하지 않는 이유입니다. killall예를 들어 솔라리스 박스에서 실행 하는 것은 재앙입니다.
Patrick

9

예, bash 기능을 사용하여 출력을 반복 할 수 있습니다.

$ for proc in $(pgrep <process command>); do kill $proc; done

나는kill <no>:failed: operation not permitted
Timo

적절한 권한이 없거나 프로세스가 더 이상 존재하지 않을 수 있습니다. superuser.com/questions/1175485/…
lcipriani

0

배열로 여러 프로세스를 종료 할 수 있습니다. 이 경우 같은 옵션을 지정할 수 있습니다 $ip, $hostname또는 비슷한.

ip=your_ip_address; declare -a arr=$(ps aux|grep tail|grep $ip|awk '{print $2}'); for pid in ${arr[@]}; do kill -9 $pid; done;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.