gpt4 book ai didi

linux - shell 脚本中的定时陷阱

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:06 24 4
gpt4 key购买 nike

我有一个运行“nohupped”的 shell 脚本后台进程。这个过程应该在陷阱中接收信号,但是在玩一些代码时,我注意到如果它们之间的间隔太小,一些信号会被忽略。 trap 函数的执行花费了太多时间,因此后续信号去没有服务。不幸的是,trap 命令没有某种信号队列,这就是为什么我要问:解决这个问题的最佳方法是什么?

一个简单的例子:

function  receive_signal()
{
local TIMESTAMP=`date '+%Y%m%d%H%M%S'`
echo "some text" > $TIMESTAMP
}

trap receive_signal USR1

while :
do
sleep 5
done

最佳答案

无需重新设计方法,最简单的更改是使用 realtime signals , 哪个队列。

这不是可移植的。实时信号本身是一个可选的扩展,并且扩展在任何情况下都不需要对它们的 shell 和实用程序支持。然而,碰巧 Linux 上的相关 GNU 实用程序——bash(1)kill(1)——确实支持实时信号常识的方式。所以,你可以说:

trap sahandler RTMIN+1

和其他地方:

$ kill RTMIN+1 $pid_of_my_process

关于linux - shell 脚本中的定时陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13371558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com