2016-09-19 1 views
1

는 내가 모든 관련 로그 파일의 위치를 ​​발견하고 여기에 명령을 내 마지막 질문에 언급 : https://cloud.google.com/compute/docs/startupscript#rerunthescriptGCE 시작 스크립트의 종료 코드는 어디에서 찾을 수 있습니까?

내 상황 :

시작 스크립트는 말 그대로 테스트 목적으로 "종료 69"로 시작합니다.

명령은 내가 실행

sudo google_metadata_script_runner --script-type startup 
echo $? 

출력 : /var/log/daemon.log

0

관련 내용 (반복) :

9월 19일 15시 15분 : 32 api-0 startup- script : INF 시작 스크립트 시작.
9 월 19 일 15:15:32 api-0 startup-script : INFO 메타 데이터에 시작 스크립트가 있습니다.
9 월 19 일 15:15:32 api-0 startup-script : INFO startup-script : 리턴 코드 69
9 월 19 일 15시 15 분 32 초 api-0 startup-script : INFO 실행중인 시작 스크립트가 완료되었습니다.

/var/log/daemon.log를 분석하고 실제로이 결국 바라고 내가 잘못된 잡아되지 것없이 내 스크립트의 리턴 코드를 얻을 수있는 좋은 방법이 있나요?

답변

1

흠, script_runner에 대한 경험이 없지만 해결책이 있습니다.

function Exit(code) { 
    echo $code > /tmp/runner_code 
    exit $code  
} 

싶게 단지 cat /tmp/runner_code 스크립트를 실행 한 후를 :

다음과 같은 내용으로 스크립트의 종료() 함수를 구현

. 그게 당신의 문제를 해결합니까?

+0

"exit"문 외부에서 예상치 못한 곳에서 스크립트의 무언가가 실패하는 모든 경우를 다루려고합니다. 새로운 이탈 기능을 정의하면 기본 종료 기능을 덮어 씁니까? 예를 들어 시작 스크립트 중간에 예기치 않은 임의의 명령이 종료 코드 5와 충돌하면이 함수가 자동으로 실행되어 실행되고 파일에 5를 씁니 까? – snetch

+0

'alias'를 사용하여 종료 기능을 무시할 수 있지만 스크립트 내에서만 가능합니다. 'alias exit =' 'Exit'와 같은 것입니다. 그러나 어떤 경우에도 처음에 'set -e'를 지정하지 않으면 스크립트가 자동으로 종료되지 않습니다. 만약 당신이 그것을 가지고, 그럼 그냥 제거하고 프로그램은 당신이 그것을 원할 때 종료됩니다 –

+0

글쎄, 요점은, 내 스크립트에 종료 문을 가지고 있지 않습니다. 그리고 내가 그랬더라도, 나는 출구 진술의 외부에서 일어나는 충돌을 덮고 싶다. 나는 "set -e"를 스크립트에도 추가 할 것이다. 그래서 별칭은 내 경우에는 쓸모가 없다고 생각합니다. – snetch

관련 문제