等待陷阱后退出

时间:2019-04-26 11:23:57

标签: bash signals

我需要处理SIGTERM并保持脚本运行。

#!/bin/bash
trap 'echo do-nothing' SIGTERM
sleep 10m &
wait $!

为什么在SIGTERM脚本退出之后,以及如何使其运行直到sleep 10m &完成?

2 个答案:

答案 0 :(得分:0)

已解决:

#!/bin/bash

trap 'echo SIGTERM' SIGTERM
sleep 1m &
echo waiting
wait $!
echo Got signal but still waiting
wait $!
echo bye

输出:

waiting
SIGTERM
Got signal but still waiting
bye

它将“吞噬” 一个信号,并在sleep 1m &完成后退出。

答案 1 :(得分:0)

该信号将始终将执行点从wait转移到trap,并且显然会在断开wait的下一条语句处执行。

也许是吗?

#!/bin/bash
trap 'echo nope; wait $pid' term
sleep 10m & pid=$1
wait $pid
echo "Done - exited with code '$?'"
date