[英]How to kill a Java process started by a script if script was terminated via CTRL + C?
我有以下script1.sh
:
#!/bin/bash
trap 'echo "Exit signal detected..."; kill %1' 0 1 2 3 15
./script2.sh & #starts a java app
./script3.sh #starts a different java app
當我執行CTRL + C時,它會終止script1.sh
,但是由script2.sh
啟動的Java Swing應用程序仍然保持打開狀態。 怎么不殺它呢?
我覺得這樣的事情對你有用。 但是,正如@carlspring所提到的,你最好在每個腳本中都有類似的東西,這樣你就可以捕獲相同的中斷並殺死任何丟失的子進程。
不管怎么樣
#!/bin/bash
# Store subproccess PIDS
PID1=""
PID2=""
# Call whenever Ctrl-C is invoked
exit_signal(){
echo "Sending termination signal to childs"
kill -s SIGINT $PID1 $PID2
echo "Childs should be terminated now"
exit 2
}
trap exit_signal SIGINT
# Start proccess and store its PID, so we can kill it latter
proccess1 &
PID1=$!
proccess2 &
PID2=$!
# Keep this process open so we can close it with Ctrl-C
while true; do
sleep 1
done
好吧,如果你在后台模式下啟動腳本(使用&
),它在調用腳本退出后繼續執行是正常的行為。 您需要通過將echo $$
存儲到文件來獲取第二個腳本的進程ID。 然后使相應的腳本具有一個stop
命令,當您調用它時,該命令將stop
此過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.