終了ステータス、シグナル
終了ステータス
コマンド終了時に「終了ステータス (exit-status)」と呼ばれるコマンドの成否を表す数値が特殊変数 $? に自動で設定される。
コマンド成功 「0」
コマンド失敗 「1」
直前に実行したコマンドの成否は、特殊変数 $? に設定されている値で確認
ファイルが存在せず、cat コマンドが失敗したため、終了ステータスは 1 になる
touch コマンドで空のファイルを作成したので、今度は cat コマンドが成功し、終了ステータスが 0 になる
シグナル
実行中のプロセスに対して、さまざまなイベントを通知するために送出されるもの
使用可能なシグナルの一覧は、コマンドラインから kill -l
を実行
プロセスにシグナルを送出するには kill コマンドを使用
sleep コマンドに & を付けてバックグラウンドで実行する
pgrep コマンドでプロセス ID を検索する
TERM シグナル送出
再検索すると終了していることを確認できる
kill コマンドでプロセスに対してシグナルを送出すると、割り込みや強制終了など各シグナルの意味に沿った処理が実行される
シグナルID | シグナル名 | 動作 |
1 |
HUP |
ハングアップ(端末との接続が切断)による終了 |
2 |
INT |
キーボードからの割り込みによる終了 |
3 |
QUIT |
キーボードからの中止 |
4 |
ILL |
不正な命令による中止 |
6 |
ABRT |
中断 |
9 |
KILL |
強制終了 |
11 |
SEGV |
不正なメモリ参照による終了 |
15 |
TERM |
終了(デフォルト) |
18 |
CONT |
再開 |
19 |
STOP |
中断 |