![发送信号进行处理并等待x秒直至其消失](https://linux22.com/image/775950/%E5%8F%91%E9%80%81%E4%BF%A1%E5%8F%B7%E8%BF%9B%E8%A1%8C%E5%A4%84%E7%90%86%E5%B9%B6%E7%AD%89%E5%BE%85x%E7%A7%92%E7%9B%B4%E8%87%B3%E5%85%B6%E6%B6%88%E5%A4%B1.png)
我认为这是一个常用成语在 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
命令似乎非常接近问题的内置解决方案。