我有一个 shell 脚本,我可以在其中使用“trap”命令来捕获发送的信号。
当接收到特定信号时,它将执行一些功能。
我使用“kill”命令发送信号。
我只想触发脚本中的函数,而不是真正杀死脚本。
本来我认为SIGUSR1
andSIGUSR2
应该可以工作,但我错了,脚本刚刚退出。
那么有没有办法只使用 kill 发送信号来触发某些功能而不真正杀死进程?
我相信它很少使用,但我知道您可以参考的一个常见案例。
dd
您可以在运行时向 dd 发送 USR1 信号,它将输出进度。完全是用户态,并且工作得很好,完全可移植的代码。参考:http://en.wikipedia.org/wiki/Dd_(Unix)
根据 kill 和 signal(7) 的手册页,您最希望的就是停止然后继续。但我认为这不会做你想要的。我还质疑使用“kill”的愿望,该命令的名称使其预期目的非常明确,以执行此操作。几乎可以使用 kill 发送的每个信号都旨在终止进程或使其转储核心。我不是专家,但我认为您在这里尝试使用错误的工具。