簡體   English   中英

如何從另一個shell向bash腳本發送信號

[英]How to send signal to a bash script from another shell

我啟動以下腳本,我在前台運行bash shell(比如說shell1),從另一個shell(shell2)運行kill -SIGUSR1 pidof(scriptA)。 什么都沒發生。 我究竟做錯了什么 ? 我嘗試了其他信號(SIGQUIT等)但結果是一樣的。

test_trap.sh

function iAmDone { echo "Trapped Signal"; exit 0 } 
trap iAmDone SIGUSR1 
echo "Running... " 
tail -f /dev/null # Do nothing

在shell1中

./test_trap.sh

在shell2中

kill -SIGUSR1 ps aux | grep [t]est_trap | awk '{print $2}'

在尾部完成之前不會執行陷阱。 但尾巴永遠不會完成。 嘗試:

tail -f /dev/null &
wait

陷阱將在不等待尾部完成的情況下執行,但如果退出尾部將繼續運行。 所以你可能想要kill $! 在陷阱里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM