Mac OS X의 pgrep 및 pkill 대안?


23

Mac OS X에 대안 pgreppkill명령이 있습니까? 아니면 다른 명령을 사용하여 별명을 만들어야합니까?

답변:


11

MacPorts를 사용할 수 있습니다 .sudo port install proctools

결과는 다음과 같습니다 port search pgrep.

proctools @0.4pre1 (sysutils)
    pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)

3
proctools는 Homebrew를
Andrew Marshall

@AndrewMarshall이 맞습니다. 사제 시도brew install proctools
cwd


11

맥 OS 10.8 이후 : 당신은 더 이상 대안이 필요하지 않습니다 pgreppkill기본적으로 사용할 수 있습니다.


10

Mac에서 비교적 최신 버전의 Bash를 사용한다고 가정하면 자체 버전의 pgrep함수를 작성한 다음 .bashrc파일에 추가 할 수 있습니다.

function pgrep() {
    ps aux | grep $1 | grep -v grep
}

뿐만 pkill다음을 사용할 수 있습니다 :

function pkill() {
    local pid
    pid=$(ps ax | grep $1 | grep -v grep | awk '{ print $1 }')
    kill -9 $pid
    echo -n "Killed $1 (process $pid)"
}

Z Shell을 사용하고 있지만이 문제를 수정하는 데 아무런 문제가 없습니다.
Eimantas

1
또는 / bin / kill $ (ps ax | awk '$ 5 ~ /' "$ 1" '/ {print $ 1}')에 대해보다 충실한 pgrep (프로세스 이름 만, 인수는 아님)에 대해 / bin / kill을 사용합니다. 정규식을 제어하는 ​​경우 'grep -v grep'을하지 않아도되는 grep을 제어 할 수있는 다른 방법이 있습니다. 그 방법으로 grep을 pkill 할 수 있습니다!)
jrg

function키워드 를 삭제하시기 바랍니다 . 더 이상 사용되지 않습니다. 이 게시물
SiegeX

당신은 굉장합니다.
Bijan

2

Proctools 에는 OpenBSD 및 OSX가 포함되어 pgrep있으며 pkill사용할 수 있습니다. 한동안 업데이트되지 않았지만 여전히 작동해야합니다 (적어도 ABI를 거의 수정하지 않는 OSX에서는).


Proctools가 Snow Leopard와 잘 컴파일되지 않음

1

당신은 killall을 시도 할 수 있습니다. 이름으로 프로세스를 종료합니다. 전달한 문자열과 일치하는 프로세스가 모두 종료됩니다.

killall httpd ( kill all apache processes )
killall php ( kill all php process )

당신이 할 경우

killall -s man ( kill any manual page processes, if a user is using man [command]

아래와 같이 종료 될 프로세스 목록이 표시됩니다.

kill -TERM 70836

다른 신호를 원하면 다음을 수행하십시오.

killall -9 processname

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