본문 바로가기
IT

Linux - ps command로 진행되는 process를 모니터링 하는 방법

by 태환아범 2022. 4. 8.
728x90

안녕하세요.

 

최근에 virtualbox를 이용하여 LINUX 를 깔아서 운영해보니 넘나 개발하기 좋은 환경입니다.

 

하지만 LINUX로 개발하면서 코딩을 껐다 켰다 하다보면 zombi process가 생기고 전체적인 성능을 저해하기 떄문에 이런 process는 꾸준히 죽여줘야 합니다. 

 

특히 LINUX는 윈도우처럼 매일 껐다 켰다 하는게 아니니 더더욱 이런 장치가 필요합니다.

 

그때 사용하는게 ps 라는 현재 진행하는 Process를 볼 수 있는 command입니다.

 

자세한 옵션은 https://jhnyang.tistory.com/268 이 블로그를 참고 하십시요.

 

하지만 저는 간단히 사용하는 방법을 알려드리고 싶기 때문에

 

ps -elf 라고 쓰라고 추천해드리고 싶습니다. 이 옵션은 간단히 시간순으로 디테일하게 진행하는 프로세스를 보겠다 라는 것입니다.

 

이렇게 치면 결과가 

0 R username 15122 15106  0  80   0 - 38862 -      16:42 pts/4    00:00:00 ps -elf

 

이렇게 나옵니다. 하지만 이걸 그냥 쓰는게 아니고 

 

ps -elf | grep username 으로 해서 root에서 실행하는건 제외하고 내가 던진 process만 보겠다 라고 하는 것입니다.

 

그렇게 해서 필요없는 프로세스를 발견하면 4번째 값인

 

0 R junpyo_+ 15122 15106  0  80   0 - 38862 -      16:42 pts/4    00:00:00 ps -elf

 

15122 를 kill 로 죽일 수 있습니다.

 

kill 15122 

 

로 process 를 죽이면 강제 종료 시킬 수 있습니다. 

 

#!/bin/csh -f
setenv i 1
while ($i < 2) 
  setenv num_mar `ps -elf | grep username | grep fire | grep -v tab | grep marionette | wc -l`
  echo "number of marionette : $num_mar"
  if ($num_mar > 4) then 
    kill  `ps -elf | grep username | grep fire | grep -v tab | grep marionette | head -1 | awk '{print $4}'`
  endif
  sleep 60
end

 

저는 크롤링을 정보 수집 목적으로 여러개 돌려놓는데, 중간에 죽으면 firefox 창이 살아서 10개가 쌓이고 쌓인 브라우져로 인해 리눅스가 죽는 경험이 있어서 창이 4개 이상 쌓이면 오래된 창을 강제로 꺼버립니다. 실제 수행하는 프로세스는 3개입니다. 1개는 마진으로 놔뒀어요. 그래서 계속 프로세스를 보면서 firefox의 브라우저 갯수를 보다가 4개 초과하여 쌓이면 하나씩 종료하는 코드입니다. 무한 루프로 돌게 만들어놨어요 

이런 식으로 ps 를 사용해서 모니터링 하는 코드를 간단히 쓸 수 있어요. grep이나 awk 는 예전에 포스팅 한 내용이 있으니 참고하세요.

728x90

댓글