Mus*_*afa 2 linux bash signals
我有以下脚本,其中包含tail --pid=${somepid} -f ${mylogs}. 我想捕获SIGTERM该 PID 并对其进行一些正常关闭,因为该进程无法理解SIGTERM并痛苦地终止。
echo "pid: $$"
trap_with_arg() {
func="$1" ; shift
for sig ; do
trap "$func $sig" "$sig"
done
}
func_trap() {
echo Trapped: $1
}
trap_with_arg func_trap INT TERM EXIT STOP
tail -f /dev/null
Run Code Online (Sandbox Code Playgroud)
当我kill -15 ${bashpid}从另一个终端使用时,除非使用 CTRL+C,否则不会打印捕获的信号。当最后一个命令不是一个进程,而是一个read内置的 shell 时,捕获的信号将立即打印。为什么会这样呢?如果我执行以下操作,它会起作用:
tail -f /dev/null &
wait $!
Run Code Online (Sandbox Code Playgroud)