を殺されたときにコマンドを実行している終了し、私はこのシェルスクリプトはbashを終了します対話型端末、Ctrl + Cからこれを実行するシェルスクリプトは、テストの目的のために
#!/bin/bash
echo $$
find/>/dev/null 2>&1
、およびfindコマンドを持っています。
$ ./test-k.sh
13227
<Ctrl+C>
$ ps -ef |grep find
$
バックグラウンドで実行すると、シェルを強制終了すると、スクリプトで実行中のコマンドが孤立します。
$ ./test-k.sh &
[1] 13231
13231
$ kill 13231
$ ps -ef |grep find
nos 13232 1 3 17:09 pts/5 00:00:00 find/
$
このシェルスクリプトは、呼び出された方法に関係なく、終了時にすべての子プロセスを終了します。最終的にはPythonとJavaアプリケーションから開始されます。スクリプトが終了するとクリーンアップのいくつかの形式が必要になります。私が調べなければならないオプションや終了時に自身をクリーンアップするスクリプトを書き直す方法はありますか?
従来のno-opコマンドは "': '"です。 – ephemient
ホット。今すぐ変更する。 –
プロセスをバックグラウンドで起動すると、そのプロセスは強制終了されません。バックグラウンドで起動しないと、子プロセスが殺される –