2013-02-06 2 views
1

내가 작업해온 Bash 스크립트는 백그라운드에서 일부 프로세스를 호출합니다. 부모 Bash 스크립트에서 "대기"를 사용하여 모든 백그라운드 프로세스가 완료 될 때까지 기다렸습니다. 정상적으로 실행됩니다.실패한 백그라운드 프로세스를 다시 시작해야합니다. 쉘 스크립트

그러나 문제는 다시 시작하는 것입니다. 나는 자식 프로세스가 끝나면 다시 시작해야한다. while을 사용하고 pgrep을 사용하여 프로세스 상태를 확인하고 문제를 다시 시작하여 영원히 루프를 시도했습니다. 그러나 그것은 자원을 소비 할 것입니다.

자식 백그라운드 프로세스가 중지/종료/종료되는 즉시 다시 시작할 수 있습니까?

+0

'대기'를 사용하는 것이 잘못된 이유는 무엇입니까? –

+0

아마도 : [SIGCHLD로'trap'을 사용하는 프로세스 재시작] (http://stackoverflow.com/questions/6769414/bash-restart-sub-process-using-trap-sigchld) – C2H5OH

답변

1

daemon command--respawn과 함께 사용하여 바퀴를 다시 열지 마십시오.

당신은 또한 (그들이 때문에 잘못된 명령 줄 옵션 즉시 죽을 때 예를 들어) 확인 버그 프로세스가 무한 리스폰 - 루프가 발생하지 않습니다 수 있도록하는 옵션 --acceptable, --attempts--delay을 고려해야합니다.

+0

데몬 명령 옵션이 좋아 보인다. . 손을 사용하려고해도 여전히 사용법이 명확하지 않습니다. 데몬 - 이름 processname -X 실행 파일 -c/설정 파일 실행 가능/ 작동하지 않습니다. – Ankit

+0

그것을 알아 냈습니다. 아론 감사합니다. 공장!! – Ankit

+0

'-c'는'daemon'을위한 것이지, 시작하려는 프로세스를위한 것이 아닙니다. 실행 파일에 인수를 전달해야하는 경우 스크립트에서이 인수를 래핑해야합니다. –

관련 문제