임베디드 보드를 테스트 하다보면 백그라운드로 동작하고 있는 프로세스를 죽이고 싶습니다.

한개면 하나씩 kill 을 하면 되지만, 여러개 이면 피곤해 집니다.


아래는 현재 제가 테스트 하고 있는 보드의 ps 명령어를 입력 한 것중 일부분을 올렸습니다.


root@aaa:/app/test# ps

  PID USER       VSZ STAT COMMAND


 1124 root      2236 S    /home/root/app-gpio 3874 out 2 30 1 blink=300

 1125 root      2236 S    /home/root/app-gpio 3874 out 2 31 1 blink=300

 1126 root      2976 R    ps


제가 없애고 싶은 것은 app-gpio(pid 번호 1125, 1125)입니다.


그럼 이제 없애 보기 시작 하겠습니다.


1.

우선 pid를 추출 해야 합니다.


ps | grep app-gpio 명령어를 넣으면, 아래와 같습니다.


 1124 root      2236 S    /home/root/app-gpio 3874 out 2 30 1 blink=300

 1125 root      2236 S    /home/root/app-gpio 3874 out 2 31 1 blink=300

 1128 root      2976 S    grep app-gpio


1128은 필요 없으니 필터링을 해아 합니다.


2. 

ps | grep app-gpio | grep -v grep 를 넣으면, 아래와 같습니다.


 1124 root      2236 S    /home/root/app-gpio 3874 out 2 30 1 blink=300

 1125 root      2236 S    /home/root/app-gpio 3874 out 2 31 1 blink=300


3.

이제 pid 만 추출해야 합니다.


ps | grep app-gpio | grep -v grep | awk '{print $1}' 를 입력 합니다.


1124

1125


만 나왔습니다.


4. 

이제 kill 명령어와  합체시키겠습니다.


kill `ps | grep app-gpio | grep -v grep | awk '{print $1}'` 를 입력합니다.


5. 

ps 를 해보시면 제가 원하는 프로세스가 제거된 것을 확인 할 수 있습니다.


결론 


kill `ps | grep 프로세스이름 | grep -v grep | awk '{print $1}'`


주의 할 점

ps 앞의  ` 는 GRAVE 입니다. 숫자 1 번 왼쪽 키

{ 앞의 ' 는 APOSTROPHE 입니다. : 오른쪽 키

{print $1} 는 머신마다 pid 있는 위치가 틀립니다. 따라서 위치에 따라 $1, $2 이렇게 변경해 주셔야 합니다.


끝 -