发送信号进行处理并等待x秒直至其消失

发送信号进行处理并等待x秒直至其消失

我认为这是一个常用成语在 Linux 世界中所以我的问题是它是否有一些内置功能?

就像是:

参数:

$PID  - the process to send signal to
$SIGNAL_NAME   - the signal to send to the process
$WAIT_TIME    - number of seconds to wait for $PID to disappear

我正在寻找的命令会向进程 $PID 发送 $SIGNAL_NAME,然后同步等待 $WAIT_TIME,直到 $PID 进程消失。当然,命令会有一些适当的退出代码。

我可以很容易地编写这样的脚本。我只是希望这是一个常见的要求?也许是一个 shell 内置的?

答案1

啊啊

我希望kill命令中有一个选项或者某个东西能帮我完成这个技巧。

到目前为止我发现的最佳解决方案是:

kill -$SIGNAL_NAME $PID; timeout ${WAIT_TIME}s tail -f /dev/null --pid $PID

假设tail命令支持该--pid选项,那么它工作正常。但是,这是(许多)Linux 命令构造中的一个典型示例,需要大量时间和调查才能了解它的实际作用。一个月后,我将忘记上述命令为何有效。:-(

除了不接受 PID 作为参数之外,该killall --wait命令似乎非常接近问题的内置解决方案。

相关内容