exec -aを使用してプロセス名を指定しますが、CTRL-Cの影響を受けずにバックグラウンドで実行します。

exec -aを使用してプロセス名を指定しますが、CTRL-Cの影響を受けずにバックグラウンドで実行します。

bashスクリプトでバックグラウンドプロセスを開始したいのですが、別の名前を付けてCTRL- に免疫するようにしたいと思いますC。私は以下を試しました:

exec -a NiceName java -cp ....long java command line &
tail -f logs/the.log

execプロセスにjava

SIGINTが終了するプロセスに渡されるので、CTRL-stop Cscript / tailを押すまで機能します。java

私もと(exec ...&) の組み合わせを試しました(exec ...)&。動作するものは何ですか

exec bash -c "java command line escaping hell&"
tail -f logs/the.log

でも、地獄から抜け出さない方法があってほしいです。私も成功せずにいくつか試しましたdisown

を削除すると、exec子プロセスはCTRL- の影響を受けませんが、C名前を付けることはできません。

ベストアンサー1

もう少し実験した後、次の方法を見つけました。

(trap "" SIGINT; exec -a NiceName java -cp ....long java command line &)
tail -f logs/the.log

SIGINTサブシェルの無視はexeced コマンドによってjava継承されます。フォアグラウンドで実行bash/tail継続 CTRL-C を使用して終了できます。

おすすめ記事