daemon
모듈을 사용하여 프로세스를 대몬 화하려고합니다. 코드는 다음과 같습니다.Python : PID 파일로 Daemonizing 처리
이제 여기에 잠금 PID 파일이 생성됩니다. 이제이 프로그램을 실행하고 잘 돌아갑니다. 이제 PID/데몬 기능을 테스트하기 위해 프로그램의 다른 인스턴스를 시작합니다.
python test.py
이제는 이전 인스턴스가 이미 실행 중이므로 이번에는 실행해서는 안됩니다. 두 번째 인스턴스가 시작되어 루프에 들어 왔음을 나타냅니다 (이 중 하나는 테스트 기능에서 while
루프가 아닙니다). 이 두번째 인스턴스에서 strace
를 실행하면 다음과 같은 출력이 지속적으로
stat("/some-path-here/[email protected]", {st_mode=S_IFREG|0666,
st_size=0, ...}) = 0
select(0, NULL, NULL, NULL, {0, 100000}) = 0 (Timeout)
link("/some-path-here/[email protected] 4e1a9720.21520",
"/somepath/test.pid.lock") = -1 EEXIST (File exists)
를 제공하고이 추적은 프로세스가 강제로 살해 끊임없이 나타날 때까지. lockfile 함수는 실제로 기존 잠금 파일의 존재를 감지했지만 프로그램이 종료되지 않는 문제가 있습니다. 또한이 오류가 이미 pid 파일이 표시되도록 표시하고 싶습니다.
어떻게이 작업을 수행 할 수 있습니까?
두 번째 방법을 시도해 보았는데 더 나쁜 결과가 나타납니다. 작업 디렉토리에 pid 파일이 없으며 여전히 그 존재에 대해 불평하고 있습니다! strace를 통해 확인했습니다. – auny
strace는 "open ("test.pid ", O_WRONLY | O_CREAT | O_EXCL, 0644) = -1 EEXIST (파일이 있음)" – auny