終了ステータス、シグナル

終了ステータス

コマンド終了時に「終了ステータス (exit-status)」と呼ばれるコマンドの成否を表す数値が特殊変数 $? に自動で設定される。

コマンド成功 「0」

コマンド失敗 「1」

直前に実行したコマンドの成否は、特殊変数 $? に設定されている値で確認

 

ファイルが存在せず、cat コマンドが失敗したため、終了ステータスは 1 になる

f:id:mkyosuke:20200312142336p:plain

 

touch コマンドで空のファイルを作成したので、今度は cat コマンドが成功し、終了ステータスが 0 になる

f:id:mkyosuke:20200312142432p:plain

 

シグナル

実行中のプロセスに対して、さまざまなイベントを通知するために送出されるもの

使用可能なシグナルの一覧は、コマンドラインから kill -l を実行

f:id:mkyosuke:20200312142749p:plain

プロセスにシグナルを送出するには kill コマンドを使用

 

sleep コマンドに & を付けてバックグラウンドで実行する

f:id:mkyosuke:20200312144605p:plain

pgrep コマンドでプロセス ID を検索する

f:id:mkyosuke:20200312144714p:plain

TERM シグナル送出

f:id:mkyosuke:20200312144841p:plain

再検索すると終了していることを確認できる

f:id:mkyosuke:20200312144934p:plain

 

kill コマンドでプロセスに対してシグナルを送出すると、割り込みや強制終了など各シグナルの意味に沿った処理が実行される

シグナルID シグナル名 動作
1 HUP ハングアップ(端末との接続が切断)による終了
2 INT キーボードからの割り込みによる終了
3 QUIT キーボードからの中止
4 ILL 不正な命令による中止
6 ABRT 中断
9 KILL 強制終了
11 SEGV 不正なメモリ参照による終了
15 TERM 終了(デフォルト)
18 CONT 再開
19 STOP 中断