できない.dev

終了コード

別名: exit code / exit status / 終了ステータス

プロセスが終了時に親へ返す 0〜255 の整数。
0 が成功、非 0 が失敗を表し、シェルでは $? 、Node.js では process.exit で扱う。
CI やスクリプトの成否判定の土台になる。

公開:

定義

終了コード(exit code / exit status) は、プロセスが終了する際に親プロセスへ返す 0〜255 の整数。
慣習として 0 が正常終了、非 0 が異常終了を表す。
シェルスクリプトや CI は、直前のコマンドの終了コードを見て後続処理を分岐する。
エラーメッセージの有無ではなく、この数値が成否の正となる。

詳細

シェルでは直前のコマンドの終了コードが特殊変数 $? に入る。
Node.js は process.exit(code) で明示的に終了でき、未指定なら 0 を返す。
Bash の慣習では、コマンドが見つからないと 127、実行権限が無いと 126、シグナル N で終了すると 128+N を返す。
とくに 137(= 128+9)は、メモリ超過などで SIGKILL された合図として頻出する。

よくある誤解

  • 出力が出ていれば成功: 成否は終了コードで判断する。
    標準出力にログが出ていても、終了コードが非 0 なら失敗である。
  • 非 0 はすべて同じ: 番号ごとに意味が異なり、127・126・137 などは原因の切り分けに使える。

関連

即終了は Docker コンテナがすぐ終了する、137 は JavaScript heap out of memory と結びつくことが多い。