1

我有一个 shell 脚本,我可以在其中使用“trap”命令来捕获发送的信号。

当接收到特定信号时,它将执行一些功能。

我使用“kill”命令发送信号。

我只想触发脚本中的函数,而不是真正杀死脚本。

本来我认为SIGUSR1andSIGUSR2应该可以工作,但我错了,脚本刚刚退出。

那么有没有办法只使用 kill 发送信号来触发某些功能而不真正杀死进程?

4

2 回答 2

3

我相信它很少使用,但我知道您可以参考的一个常见案例。

dd

您可以在运行时向 dd 发送 USR1 信号,它将输出进度。完全是用户态,并且工作得很好,完全可移植的代码。参考:http://en.wikipedia.org/wiki/Dd_(Unix)

于 2013-07-28T07:56:48.040 回答
1

根据 kill 和 signal(7) 的手册页,您最希望的就是停止然后继续。但我认为这不会做你想要的。我还质疑使用“kill”的愿望,该命令的名称使其预期目的非常明确,以执行此操作。几乎可以使用 kill 发送的每个信号都旨在终止进程或使其转储核心。我不是专家,但我认为您在这里尝试使用错误的工具。

于 2013-07-28T05:24:02.093 回答