리눅스에서 프로세스 이름으로 프로세스 id 확인

가끔 쉘 스크립트를 작성할 때 특정 process 가 구동중인지 확인해야 할 경우가 있다.


이때 확인하는 방법은 여러 가지가 있다.


/var/run 폴더 확인

  1. RHEL/CentOS 기반의 linux 에서는 많은 데몬 프로세스가 /var/run 에 pid 정보를 파일로 남기게 되어 있다.
  2. pid 파일이 있는지 확인후 파일에서 pid 값을 가져와서 프로세스가 구동중인지 확인하면 된다. 스크립트라면 아래 명령어가 유용하다.

    kill -0 pid
  3. 아파치 httpd 가 구동중인지는 다음과 같이 확인할 수 있다.

    PID=`cat /var/run/httpd/httpd.pid`
    kill -0 ${PID}

ps 로 확인

현재 프로세스를 확인할 수 있는 ps 명령어와 파이프를 조합해서 확인할 수 있다. 다음은 httpd 프로세스 id 를 확인하는 방법이다.

$ ps -eaf|grep httpd|grep -v grep|awk '{print $2}'
 
3228
3684
3687
4506

"grep httpd" 실행시 grep도 프로세스 id 를 갖게 된다. grep -v grep 로 grep 의 프로세스 id 는 제외되게 해야 의도한 결과가 나온다.


pidof 명령어

pidof 명령어로 현재 구동중인 프로세스를 찾을 수 있다.

$ pidof httpd
 
30866 8917 8862 8861 7351 


httpd 는 스크립트가 아닌 최종 프로세스 이름이므로 pidof 로 바로 찾을 수 있지만 스크립트 실행시 interpreter 가 프로세스명이 되어 버려서 pidof 로는 찾지 못한다. yum 명령어의 경우 python 으로 작성된 스크립트이며 ps 로 보면 다음과 같이 표시된다

$ ps -eaf|grep yum
root     22679 22517 99 11:52 pts/1    00:10:12 /usr/bin/python /usr/bin/yum update yum
root     22957 22282  0 12:02 pts/0    00:00:00 grep yum

이럴 경우 -x 옵션을 주면 최종 수행되는 스크립트 명을 프로세스 명으로 찾게 되므로 의도한 결과를 얻을 수 있다.

$ pidof -x yum


22679


같이 보기