前回、シェルスクリプトでsourceすることでCtrl-C (SIGINT)等をキャッチして本当に終了するか尋ねるスクリプトを公開しました。

今回は任意のコマンド実行時に同様の仕掛けを組み込むプログラムnosigを公開します。

nosigをインストールすることで、今まで

$ yourprogram arg1 arg2

としていたコマンドを

$ nosig yourprogram arg1 arg2

とするだけで、Ctr-C等をトラップし、本当に終了して良いか確認するようになります。

実行に何日もかかるようなプログラムを走らせる際などに安心です。

nosigは指定したコマンド以下の全ての子プロセスにこの機構をロードしますが、用途によっては一番上のプロセスだけにロードしたい場合もあるかもしれません。
そのような場合にはnosigの変わりにnosigparentonlyを使ってください。

実行例

$ nosig sleep 20
Signal 2 caught. Are you sure to quit? [y/n] n
continue..
Signal 2 caught. Are you sure to quit? [y/n] y
quit.

ダウンロード・インストール

ダウンロード: nosig-1.0.0.tar.gz

インストールは

$ make
$ sudo make install

アンインストールは

$ sudo make uninstall

とします。