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