셸 스크립트 파일의 이상 종료시 처리

글쓴이: 익명 사용자 / 작성시간: 화, 2011/07/12 - 1:49오전
꽤나 많은 작업을 하는 셸 스크립트 파일이 하나 있습니다
수백 라인이나 되고요
다른 많은 프로그램, 유틸리티, 실행파일 등을 실행시키는 역할을 합니다
물론 스크립트이기 때문에
순서대로 하나하나씩 차례차례 실행합니다
그런데 스크립트 파일이 하나하나씩 실행시키는 실행파일 중에
어느 하나의 실행파일이 비정상적으로 종료되면서
스크립트 파일까지 도중에 중단시켜버리고 (스크립트 파일을 실행시킨 프로그램으로) 리턴됩니다
그 스크립트 파일은 중간중간에 에러가 발생하거나 하고자 하는 일을 수행하지 못해도
처음부터 끝까지 실행되어야 하는 스크립트들이고
최소한 에러가 발생하더라도 에러처리를 해야 하는데
스크립트 파일이 도중에 중단되어 팅겨져 나와 버려서(리턴되어 버려서) 에러처리도 못합니다
시그널 핸들러도 추가하여 몇몇 시그널을 등록해봤지만 (SIGCHLD, SIGSTOP, SIGINT)
핸들러 코드를 타지 않습니다
(혹시 이렇게 비정상적으로 종료될때 어떤 시그널을 등록하면 핸들러 처리를 할 수 있을까요?)
일반적으로 실행파일들을 실행시키고 난 후, $? 변수로 에러 처리를 일일이 하고 있는데
스크립트가 중단되어 팅겨져 나와 버리면 $?로 에러처리조차 할 수 없습니다
어떤 방법으로 처리할 수 있나요?
답변주시면 감사하겠습니다
Forums:
그런 경우가 생기다니 신기하군요.원인이나 해결책
그런 경우가 생기다니 신기하군요.원인이나 해결책 정답은 모르겠습니다만, 문제의 실행파일 실행하는 부분을 eval 로 둘러싸면 어떤가요?
좋은 하루 되세요!
답변 감사합니다
흔하지 않은 경우인가 보군요...
문제가 생긴 프로그램이 부모 프로세스에 해당하는 스크립트 파일까지 죽여버리다니
너무 패륜적이지 않나요...;;;
eval을 잘 모르지만 찾아보고 배워서 시도해보겠습니다
답변 감사드립니다
bash 를 사용하고 있으면 어딘가에 set
bash 를 사용하고 있으면
어딘가에
set -e
가 있는지 확인해보세요.
위 설정이 있으면
스크립트내에서 이상종료 ( exit 1) 하는 프로세스가 있으면
스크립트 자체를 종료시켜버립니다.
댓글 달기