2011-03-10 5 views
0

일부 어린이를 생성하는 Perl 스크립트가 있습니다. 그들은 모두 길을 따라 디렉토리와 파일을 생성하는데 꽤 오래 걸립니다. 나는 종종 아이들이 자연적인 원인으로 죽기 전에 변경하고 싶은 것들을 알아 차린다. 그래서 나는 모든 것을 닫아야한다. (약간 grepkill을 포함한다.) 아이들이 만든 모든 파일을 삭제한다. 정말 큰 문제는 아니지만 목에 통증이 있습니다. 나는 아이들을 모두 모니터링하는 환경을 만들고 싶습니다. 부모를 다시 시작할 때, 아직 실행중인 아이들이보고됩니다.이전 스크립트 실행에서 어린이 추적하기

지금까지 가장 좋은 아이디어는 자녀의 로그 파일을 유지하면서 자신의 PID로 실행하고 상위 스크립트 시작 부분에서 확인하고 업데이트하는 것입니다. 실행중인 모든 자식을 죽이고보고하고 죽이면 사용자가 새로 실행하기 전에 수동으로 디렉터리와 파일을 정리할 수 있습니다.

내 질문은 다음과 같습니다. 어떻게하면 로그 파일에 하위 항목을 추가 할 수 있습니까? 자동으로 처리 할 수있는 트리거를 설정하는 방법이 있습니까? 아니면 새 프로세스가 시작되는 코드에서 아무 곳이나해야한다는 것을 기억해야합니까?

p.s. 나는 이것을 달성하는 더 좋은 방법에 대한 제안에 확실히 열려 있습니다!

+0

[Parallel :: ForkManager] (http://search.cpan.org/perldoc?Parallel::ForkManager)에 대한 준비가 된 것 같습니다. – Ether

답변

0

어때 대략 signal handlers? 부모는 자신이 시작한 직업의 pid를 추적 할 수 있습니다 (원하는 경우 SIGCHLD 처리기로 수확 한 pid). 조기에 모든 것을 끝내기를 원하면, 부모에게 모든 아이들을 죽이고 그 뒤를 청소하도록 신호하십시오. 자식 프로세스가 Perl 스크립트 인 경우 신호 처리기를 하위에 배치하고 자체적으로 정리할 것인지 확인할 수 있습니다.

+0

내 관심사는 부모 프로세스가 자식 모니터링을 위해 계속 있어야한다는 것입니다. 사용자는 상위 스크립트의 다른 인스턴스를 실행하여 자식의 새 복사본을 실행하고 이미 무리가 실행되고 있음을 알지 못하게 할 수 있습니다. – ajwood