LoginSignup
2
0

More than 5 years have passed since last update.

bashで終了ステータスが100を越える時、とは?

Last updated at Posted at 2019-04-22

TL;DR

  • Linux環境で、たまに終了ステータスが100を越えるような数字を見ることがある
  • これはシグナルを受けて終了した場合で、どのようなシグナルを受け取ったかは128を引いてみればよい

お題

Ubuntu Linux 18.04 LTSで試してみます。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic

例えば、以下のようなJavaプログラムを書いてみます。

App.java

import java.util.concurrent.TimeUnit;

public class App {
    public static void main(String... args) throws InterruptedException {
        while (true) {
            TimeUnit.SECONDS.sleep(3L);
            System.out.println("waiting...");
        }
    }
}

終了しないプログラムですね。

これをコンパイルして

$ javac App.java

実行。

$ java App 
waiting...
waiting...

適当なところで、Ctrl-cで止めます。

^C

この時の終了ステータスを見ると、"130"となります。

$ echo $?
130

130ってなんでしょう?

終了ステータス#bash

この部分を見てみます。

| 128+n | シグナル n で終了 |

というわけで、シグナルを送って強制終了したプログラムなので、実際にどのようなシグナルが送られたかは128を引けばわかるというわけです。

シグナルの一覧を見てみましょう。

$ kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

130 - 128 = 2(SIGINT)、つまり割り込み(interrupt)です。

Ctrl-Cで割り込んだので、一致しますね。

というわけで、こういうケースは128を引けばよい、と知っておくとよいでしょう。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0