pid를 구하여 프로세스 kill을 할려고 하는데 여러개일 경우가 문제입니다.

dcmru의 이미지

구동스크립트를 만들었는데, stop시 문제가 있습니다.

proc=test
pid=`/bin/ps -e | grep ' test$' | sed -e 's/^ *//' -e 's/ .*//'`
echo "Stopping $prog."
if [ "${pid}" != "" ]; then
kill ${pid} > /dev/null 2>&1
fi

이렇게 했는데, 같은 이름의 프로세스가 여러개 있을 경우 제일 처음 pid만 kill을 합니다.

같은 이름의 프로세스를 모두 죽일려면 어떻게 해야하나요?

아니면 실제 데몬의 pid만 구할 수 있는 방법이 있는지요?

Linux이면 killall test 를 하면될것 같은데, 다른 OS에서 문제가 있을 것 같습니다.

어떤방법이 있을까요?

ironiris의 이미지

pkill 이라는 프로그램이 있습니다.
솔라리스에서도 기본인 프로그램 같더군요.
안녕리눅스에도 있고.. centos 에도 있고.. 다 있나본데요? ^^;

dary4n의 이미지

pidof 만 주로 썼는데 pkill 좋네요. ^_^

---
사람의 기쁨이나 슬픔 같은 것은...
풀꽃의 희미한 향기만큼도 오래 지속되지 않는다...

---
사람의 기쁨이나 슬픔 같은 것은,
풀꽃의 희미한 향기만큼도 오래 지속되지 않는다.

dary4n의 이미지

pids=$(ps -e | grep 'test' | grep -v grep| awk '{print $1}')

이렇게 하시거나,

리눅스 root 유저라면 pidof test 등으로 프로세스 잡으시면 됩니다.

---
사람의 기쁨이나 슬픔 같은 것은...
풀꽃의 희미한 향기만큼도 오래 지속되지 않는다...

---
사람의 기쁨이나 슬픔 같은 것은,
풀꽃의 희미한 향기만큼도 오래 지속되지 않는다.

SoulreaveR의 이미지

원츄

lovian의 이미지

무식하게,
for 문을 돌립니다! -_-a
-----------------
한글을 사랑합니다.

-----------------
한글을 사랑합니다.

dcmru의 이미지

알려주신 것으로 테스트해봐야겠습니다. ^^

여러 OS를 대상으로 하기 때문에 없는 명령어도 있습니다.

그리고 그냥 kill 로 옵션없이 실행했더니 프로세스가 잘 안죽는 군요.

-9 옵션을 써도 무방할까요?

----------------------------------------------
노력만이 살길이다.

노력만이 살길이다.