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

리눅스에서 프로세스 이름으로 프로세스 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


같이 보기

Related content

이름으로 process id 를 가져오는 pidof 명령어 사용법
이름으로 process id 를 가져오는 pidof 명령어 사용법
More like this
linux fuser 사용법 - 파일이나 socket 을 어떤 프로세스가 사용중인지 확인
linux fuser 사용법 - 파일이나 socket 을 어떤 프로세스가 사용중인지 확인
More like this
설정 파일 변경 사항을 반영하는 linux source 명령어 사용법
설정 파일 변경 사항을 반영하는 linux source 명령어 사용법
More like this
pv - linux 에서 대용량 파일 복사시 진행 상황 표시 및 중단시 이어서 복사 (cp 명령어 대체)
pv - linux 에서 대용량 파일 복사시 진행 상황 표시 및 중단시 이어서 복사 (cp 명령어 대체)
More like this
audit daemon
More like this
power shell 명령 종료 상태 값(command exit status) 확인
power shell 명령 종료 상태 값(command exit status) 확인
More like this