상황 : 나는 상호 작용 쉘 제한되어있는 타사 데몬의 일련의 관리 [1] 시스템 리눅스를실행중인 프로세스가 예상되는 프로세스인지 어떻게 확인합니까?
[2] 초기화 스크립트, 즉 단지 {시작 | 재시작 | 중지 | 상태를} 사용할 수 있습니다.
문제 :
프로세스가 이전에 실행중인 프로세스의 PID를 가정 할 수는 프로세스의 상태는 PID를의와 실행중인 프로세스의 존재를 검사에 의해 확인된다.
예 : PID (123)의 런은,이어서 다이
있어서, PID (123)와 상태 명령을 프로세스 B의 처음 상태는 "OK"는 인증되지 않은 (에러)로 응답한다. 즉, 프로세스가 실행 중인지 확인하기 위해 PID로부터 프로세스의 존재 여부 만 확인합니다.이 PID가있는 프로세스가 있어야한다고 가정합니다. 문제의 프로세스입니다.
제안 된 솔루션 :
- 가 예상대로 PID 그대로 실행 명령/데몬을 보장하기 위해 PID를 사용하여 프로세스를 심문. 이 솔루션의 문제점은 명령과 PID가 모두 일치해야한다는 것입니다. 따라서, 다수 비트의 정보가 유지되고 동기화 될 필요가 있고, 에러/에지 조건에 부가적인 복잡성이 추가 될 필요가있다.
- 프로세스의 시작 시간과 PID 파일의 작성 시간을 연관 시키십시오. 프로세스가 PID 파일 작성 시간의 특정 델타 내에 있으면 실행중인 명령/데몬이 상당히 확실 할 수 있습니다.
PID로 실행되는 프로세스의 존재를 넘어서는 프로세스/PID 파일의 신뢰성을 표준화하는 표준 방법이 있습니까? 나는. 나는 (시스템으로) 당신 (프로세스)이 실행 중인지, 그리고 내가 당신이 누구인지 (A와 B가 아닌지)를 알고 싶습니다.
위에서 제안한 두 번째 솔루션을 구현한다고 가정하면 PID 생성 시간과 프로세스 시작 시간 간의 신뢰 구간/델타는 어느 정도입니까? 여기에서 합리적인 것은 유형 1/유형 2 오류간에 수용 가능한 절충을 의미합니다.
[1]에 CentOS/RHEL [2] 배시
[ServerFault] (http://serverfault.com/)에 없습니까? – Graham
타사 데몬을 직접 변경할 수 있습니까? 그렇다면,'flock'을 사용하여 데몬을위한 파일 시스템 잠금을 만들 수 있습니다. –
프로세스 ID를 즉시 다시 사용 하시겠습니까? 나는 그것이 Windows의 경우 인 것을 안다. 그러나 나는 그것을 리눅스 나 유닉스에서 관찰하지 않았다. http://stackoverflow.com/questions/3446727/how-does-linux-determine-the-next-pid – cdarke