나는 몇 시간 동안 다음을 수행하려고 노력했습니다(Centos 6에서).
- cron이 프로세스 A를 시작합니다.
- 프로세스 A는 프로세스 B가 아직 살아 있는지 확인합니다.
- 프로세스 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
이건 알 수 없지만 여기 있어요해결책이것은 나에게 효과적입니다.
run.sh
다음을 수행하는 새 스크립트를 정의했습니다 .#!/bin/bash while true do run_process_a.sh sleep 60 done
그런 다음 몇 가지 다른 스크립트를 정의했습니다.
service.sh
:ㅏ데몬 스크립트start.sh
: run.sh 인스턴스를 시작하고 해당 pid를 저장하는 래퍼stop.sh
: 저장된 pid로 run.sh 인스턴스를 중지하는 래퍼
init.d를 사용하고 chkconfig를 통해 service.sh를 등록했습니다.
언급했듯이 이것은 내 질문에 대한 직접적인 대답은 아니지만 내 문제를 해결하는 데 도움이 되었기 때문에 여기에 문서화했습니다. 또한 이것이 내 의도를 달성하는 더 깔끔한 방법일 수도 있습니다.