2016-09-19 11 views
1

私は、関連するすべてのログファイルの場所を発見し、ここにコマンドを私の最後の質問で述べた:https://cloud.google.com/compute/docs/startupscript#rerunthescriptGCEスタートアップスクリプトの終了コードはどこにありますか?

マイ状況:

スタートアップスクリプトは文字通りテスト目的のための「出口69」で始まります。

コマンドは、私が実行します。

sudo google_metadata_script_runner --script-type startup 
echo $? 

出力:/var/log/daemon.log

関連する内容は(繰り返し):

9月19日午後03時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"ステートメントの外でそれを期待しないところで失敗するすべてのケースをカバーしようとしています。新しいExit関数を定義すると、デフォルトのexit機能が上書きされますか?たとえば、スタートアップスクリプトの途中で予期しないランダムなコマンドが終了コード5でクラッシュした場合、この関数は自動的にステップインして実行し、ファイルに5を書き込みますか? – snetch

+0

'alias'を使用してexit関数をオーバーライドすることはできますが、スクリプト内でのみ行うことができます。 'alias exit =' 'Exit'のようなものです。しかし、いずれにしても、最初に 'set -e'を指定しない限り、スクリプトは単独で終了しません。もしあなたがそれを持っていれば、それを取り除くだけでプログラムは終了するでしょう。 –

+0

まあ、ポイントは、私はスクリプトにexitステートメントを持っていません。そして私がしても、私は出口のステートメントの外で発生するクラッシュをカバーしたいと思います。私はスクリプトに "set -e"を追加するつもりです。だからエイリアスは私の場合は役に立たないと思う。 – snetch

関連する問題