2010-02-25 3 views
0

내 스크립트를 시작할 cron 작업을 설정했습니다.Cron 살생 프로세스 생성

이 스크립트의 목적은 현재 실행중인 프로세스를 종료하고이 프로세스 (CHECKDB)의 새 버전을 시작하는 것입니다. CHECKDB는 항상 실행되어야하므로 기본적으로 CHECKDB를 실행하는 무한 루프 인 start_checkdb 스크립트가 있습니다. 충돌이 발생하면 루프에 머무르며 다시 시작합니다. [예, 이것이 최선의 방법은 아니라는 것을 알고 있습니다.] [

내 스크립트는 문제없이 cron에 의해 호출되어 문제없이 CHECKDB를 종료합니다. 내가 말할 수있는 한, CHECKDB를 다시 시작하는 자식 스크립트가 호출되지만, cron을 실행 한 후 ps를 확인할 때마다 프로세스가 실행되고 있지 않습니다. 어떤 쉘에서도 명령 행에서 직접 스크립트를 실행하면 아무런 문제가 없습니다 : CHECKDB를 죽이고 start_checkdb, CHECKDB를 시작하는 start_checkdb를 시작합니다.

그러나 어떤 이유로 cron이 처리 할 때 프로세스가 실행되지 않습니다. 그것은 살아있는 것을 죽이고, 시작하지도 않고 시작하거나 죽이기도합니다.

cron이 부모 프로세스의 끝에 오는 경우 호출 된 자식 프로세스가 죽을 수 있습니까?

이 차이가 있는지 잘 모르겠지만,이 CHECKDB를 시작할 때, 당신의 크론 스크립트 내에서 nohup을 사용하여에 솔라리스 8

답변

0

당신은 보일 수 있습니다에 있습니다. 'nohup command &'과 같은 것은 시작 프로세스를 넘어서 살고 싶은 무언가를 시작하는 정상적인 방법입니다.

+0

음,이 작업을 시도했지만 작동하지 않았습니다. cron을 실행할 때 프로세스가 종료되고 수동으로 실행될 때 종료되지 않았습니다. 이것은 매우 실망 스럽습니다 : ( –

+0

Nohup은 단지 hangup 시그널을 숨 깁니다. 로그 아웃 할 때 tty (터미널)에서 시작한 프로그램이 종료되지 않도록하기 위해 사용됩니다. – Kenster

0

약정에 대한 설명을 명확히 해 주시겠습니까? 정상적인 상황에서는 start_checkdb와 CHECKDB가 모두 실행중인 것처럼 들립니다. cron 작업은 CHECKDB를 중지시키고 start_checkdb의 이미 실행중인 복사본을 다시 시작하기로되어 있습니까? 또는 cron 작업이 두 프로세스를 모두 종료 한 다음 start_checkdb를 다시 시작합니까? cron 작업이 실행 된 후 누락 된 프로세스 - CHECKDB, start_checkdb 또는 둘 다?

프로세스가 명령 줄에서 작동하지만 크론에서 실패하는 가장 일반적인 이유는, 그런 말로 미루어 보아 :

  • 올바른 명령 경로 의존성 (또는 다른 환경 변수)
  • 종속성 올바른 디렉토리에서 실행 중임
  • tty에서 실행중인 종속성.
관련 문제