본문 바로가기

Develop/Linux

리눅스에서 PID 로 프로세스 동작 유무 체크

리눅스에서 프로세스가 동작중일 경우

해당 정보들이 /proc/[pid] 폴더 내부에 존재하게 됨.


프로그래밍적으로 pid를 이용해서 동일 프로세스가 동작하는지 여부는

위 폴더 유무로 체크해 줄 수 있음.

$pidFileName = "/tmp/mypid";

if (file_exists($pidFileName)) {
$oldPid = file_get_contents($pidFileName);
if (file_exists("/proc/$oldPid")) {
$this->response("Exists Process");
return false;
}
}


주 언어가 php인 관계로 간단하게 위와같이 진행해주면

해당 스크립트가 다른 프로세스에서 동작중인지 여부를 체크해 줄 수 있음.


물론. 이때 프로세스 진입 단계에 현재 프로세스의 pid를 파일에 저장해 줄 필요가 있음.

$fd = fopen($pidFileName, 'w+');
/// pid 가져오기
$pid = getmypid();
fwrite($fd, $pid);
fclose($fd);

php 이외의 다른 언어에서도 동일하게 체크해줄 수 있음.

언어마다 사용함수만 다를뿐..