본문 바로가기

Linux

[CentOS] 특정 프로세스 체크하기

반응형

종종 리눅스 서버에서 특정 프로세스를 체크하여 해당 프로세스를 시작해야 하거나, 죽여야 할 때가 있다.

특히 특정시간에만 작동해야하는 프로세스의 경우 crontab에 걸어두고 해당 프로세스를 시작시킨뒤에, 원하는 시간에 kill 해줘야 한다.
사람이 일일이 주기적으로 하기에는 귀찮은면이 있으니, 쉘 스크립트 파일을 작성해두고 자동으로 프로세스를 체크할 수 있게끔 하면 편하다.



예) 프로세스 체크하여 해당 프로세스 종료

#!/bin/sh

PGM_NAME=testPro
DATE=`date +%Y%m%d-%H%M%S`

Cnt=`ps -ef|grep $PGM_NAME|grep -v grep|grep -v vi|wc -l`
PROCESS=`ps -ef|grep $PGM_NAME|grep -v grep|grep -v vi|awk '{print $2}'`


if [ $Cnt -gt 0 ]
then
   kill -9 $PROCESS
   echo "$DATE : $PGM_NAME (PID : $PROCESS) has been stopped."
else
   echo "$DATE : $PGM_NAME is not running."
fi




위의 스크립트의 경우 "testPro"라는 프로세스를 ps 명령어로 카운트 한뒤 pid를 읽어와 강제로 kill 하는 스크립트 이다.

또는 프로세스 체크고 뭐고 그냥 해당 프로세스를 무조건 종료시켜야 겠다고 하면 아래와 같은 방법도 가능하다.



예) 특정 프로세스 모두 종료(kill)

#!/bin/sh

PGM_NAME=testPro
ps -ef|grep $PGM_NAME|grep -v grep|awk '{print "kill -9 "$2}'|sh -x