cron 작업에서 데몬 프로세스 시작

cron 작업에서 데몬 프로세스 시작

나는 몇 시간 동안 다음을 수행하려고 노력했습니다(Centos 6에서).

  1. cron이 프로세스 A를 시작합니다.
  2. 프로세스 A는 프로세스 B가 아직 살아 있는지 확인합니다.
  3. 프로세스 B가 존재하지 않으면 프로세스 A가 프로세스 B를 시작합니다.

문제는 프로세스 A가 종료된 후 프로세스 B도 종료된다는 것입니다.

프로세스 A와 프로세스 B 모두 bash 스크립트를 실행합니다.

bin/bash script.sh &나는 사용 하려고 노력했지만 exec bin/bash script.sh성공하지 못했습니다. 콘솔에서 프로세스 A를 시작하면 프로세스 B가 종료되지 않습니다.

내가 하려는 일은 이론적으로 가능합니다(예: cron 실행 프로세스에서 프로세스를 시작하고 이를 유지하도록 만드는 것). 프로세스 A가 종료된 후에도 프로세스 B가 유지되도록 프로세스 B를 시작할 수 있는 다른 방법은 무엇입니까?

답변1

scriptForA.sh 내부에서 사용됩니다 nohup scriptForB.sh. 이렇게 하면 상위 프로세스가 종료될 때 하위 프로세스가 종료되지 않습니다.

종료 시 상위 프로세스는 SIGTERM모든 하위 프로세스에 신호를 보냅니다. 을 사용하면 nohup하위 프로세스가 SIGTERM신호를 무시합니다.

답변2

이건 알 수 없지만 여기 있어요해결책이것은 나에게 효과적입니다.

  1. run.sh다음을 수행하는 새 스크립트를 정의했습니다 .

    #!/bin/bash
    
    while true
    do
       run_process_a.sh
       sleep 60
    done
    
  2. 그런 다음 몇 가지 다른 스크립트를 정의했습니다.

    • service.sh:ㅏ데몬 스크립트
    • start.sh: run.sh 인스턴스를 시작하고 해당 pid를 저장하는 래퍼
    • stop.sh: 저장된 pid로 run.sh 인스턴스를 중지하는 래퍼
  3. init.d를 사용하고 chkconfig를 통해 service.sh를 등록했습니다.

언급했듯이 이것은 내 질문에 대한 직접적인 대답은 아니지만 내 문제를 해결하는 데 도움이 되었기 때문에 여기에 문서화했습니다. 또한 이것이 내 의도를 달성하는 더 깔끔한 방법일 수도 있습니다.

관련 정보