比較bash
とash
は次のようにしてのみ終了できdash
ます。bash
SIGTERM
kill -TERM <pid>
そしてash
私はbash
必要SIGHUP
ですSIGKILL
kill -HUP <pid>
kill -KILL <pid>
その理由は何ですか?また、動作はシステムによって異なります。
bash
SIGTERM
Ubuntu 14.04 Trusty, Ubuntu 16.04 Xenial, Ubuntu 18.04 Bionic, Ubuntu 19.10 Eoan, Ubuntu 20.04 Focal, Debian 8 Jessie, Debian 9 Stretch, Debian 10 Buster, CentOS 8bash
はいいいえSIGTERM
CentOS 6、CentOS 7で終了
ベストアンサー1
これは、bashが行readline
編集ライブラリを使用してユーザー入力を待っている場合にのみ発生します。bash
実行すると、Aはbash --noediting
死ぬことはなく、SIGTERM
自分で死ぬこともありません。bash
kill -TERM $$
readline()
これは、ユーザー入力を受け取るbash関数が独自のシグナルハンドラをインストールしてSIGTERM
返す前に元のシグナル処理を復元するためです。ユーザー入力を待っている間に発生した場合に返されますSIGTERM
。readline
readline()
NULL
readline()
()を呼び出すbash関数はreturnをと解釈しyy_readline_get()
てシェルを終了します。これはとても似ています。NULL
EOF
回答。
SIGTERM
これは、インタラクティブなbashが設定でも生き残ることができることを意味しますIGNOREEOF
;-):
$ bash
$ IGNOREEOF=10
$ echo $$
11096
<kill -TERM 11096 from another terminal>
$ Use "exit" to leave the shell.
<kill -TERM 11096 from another terminal>
$ Use "exit" to leave the shell.
...
<the 10th will get it>
$ exit
$