이름에 따라 -9로 죽이는 쉘 스크립트


28

이 프로세스를 자동화하는 방법 (아마도 스크립트)이 있습니까?

petr@sova:~$ ps -ef | grep middleman
petr     18445  2312  1 12:06 pts/2    00:00:01 /home/petr/.rvm/gems/ruby-1.9.3-p362/bin/middleman                                                                  
petr     18581 13621  0 12:08 pts/0    00:00:00 grep --color=auto middleman
petr@sova:~$ kill -9 18445

불행히도 에 대한 옵션을 pkill사용해야하므로 너무 약 -9합니다 kill.


2
당신 도 -9함께 사용할 수 있습니다 pkill...
중지 해밍 모니카

6
내 의견으로는, -KILL보다 사용하기가 더 우아하고 적절합니다 -9. 어떤 숫자는 구현에 따라 어떤 신호에 해당합니다. SIGKILL될 일이 9아니라 반드시 모든 곳에서, 리눅스 I386 및 Linux AMD64에서. ( 자세한 정보는 여기에 있습니다. )
Eliah Kagan

5
@EliahKagan : 내가 사용하고자하는 동안 -KILL(이 코드를 읽기 쉽게 만들기 때문에)도, 그 주목해야 SIGKILL = 9한다 POSIX에 의해 지정된 그래서, -9요즘 꽤 휴대용 (그리고 커널 또는 아키텍처에 의존하지 않는다).
Andrea Corbellini

답변:


36

쉘을 사용하여이 작업을 수행 할 수 있습니다.

kill -9 $(pidof middleman)

쉘은 명령을 pidof middleman먼저 실행합니다 . pidof (8) 의 출력은 프로세스 ID입니다. 따라서 쉘은 pidof-command를 프로세스 ID로 대체 하고 실행합니다 kill -9 18845(또는 올바른 프로세스 ID가 무엇이든간에).


이것과의 차이점은 무엇입니까 kill -9 $(pgrep middleman)?
Aaron Franke

54

qbi보다 더 간단한 해결책이 killall있습니다. 프로세스를 이름으로 죽이고 신호를 지정할 수 있습니다.

killall -9 middleman

자세한 man killall내용과 추가 옵션을 참조하십시오 (몇 가지가 있습니다).

이름에서 알 수 있듯이 이것은 이라는 모든 프로세스에 신호를 보냅니다 middleman. 그러나 다른 방법과는 다르지 않습니다 (예 pkill:). 또한 pkill -9 middleman이름은 일치하지만 같지 않은 프로세스를 대상으로합니다 ( middleman예 : 등) middleman2.


2
killall승리를 위해!
Andrea Corbellini

4
모든 중개인을 죽입니까? 오 친애하는 ...
Tobias Kienzler

16

다른 답변은 전적으로 정확하지만 세 번째 옵션을 추가하여 여기에 모두 설명되어 있습니다. 다음을 사용할 수도 있습니다.

pkill -9 middleman

자세한 man pkill내용 및 추가 옵션을 참조하십시오 .

어떤 방법을 사용하는지는 중요하지 않습니다. 그들은 모두 작동합니다. 그러나 해당 매뉴얼 페이지에 사용 가능한 다른 일치하는 옵션이 표시되므로 어떤 방식으로 동작을 수정하려는 경우 유용한 경우 옵션을 알고 있어야합니다.


이상 해요, 여기서 작동하지 않습니다. 또한middleman*
mreq

1
아 좀 더 자세히 살펴보면 실제로라는 프로세스가 아닌 루비 인터프리터를 죽이려는 것 같습니다 middleman. 이 방법을 정확하게의 경우 차이입니다 pkill, killall, pidofgrep일치하는 프로세스가 정말 중요하기 시작!
Robie Basak

12
pkill -9 -f middleman

-f옵션을 사용하면 프로세스 이름이 아닌 전체 명령 행과 일치합니다.

참고 -9최후의 수단 신호, 정기적으로 사용하지 않는 것을해야한다.


1
감사! 나는complete command line
cwd

완전한 커맨드 라인은 정말 멋지다!
okwap

10

재미를 위해서, 더 수동적이고 오래된 학교 방식을 추가하고 싶습니다.

kill -9 `ps aux | grep middleman | awk '{print $2}'`

1
나는 몇 년 전에 직장에서 그 일을했고 관리자는 나에게 "좋아, 할아버지"라고 한 표정을 주었다. grep 명령도 종료하지 않도록 awk 앞에 grep -v grep을 추가 할 수도 있습니다.
Iain Holder

@gerhard, 편집 해 주셔서 감사합니다. 내 iPad에서 백틱을 찾을 수 없습니다. grep -v는 좋은 생각입니다 ...
slipset

실제 구식 방법은 우연히 프로세스를 ... grep [m]iddleman ...죽이지 않도록 작성 하는 것 grep입니다. 그렇게하면 재미있는 인용문 때문에 grep이 일치하지 않습니다.
Mikko Rantalainen

1
killall -9 -ir regex_pattern

대화식 (안전)이며 부분 명령 이름과 일치합니다.

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