Dennis Williamson Asked: 2009-05-06 21:49:07 +0800 CST2009-05-06 21:49:07 +0800 CST 2009-05-06 21:49:07 +0800 CST 如何在工作中使用符号信号? 772 在这个关于 SO 的答案中,我给出了一个应该在提交到at的作业中使用 -SIGCONT 信号的示例。但是,我发现我用 -SIGSTOP 停止的进程没有继续。当我将信号更改为数值时,它起作用了。 echo "kill -18 $rspid"|at now + 2 minutes 使用数值是个坏主意,因为它在不同的系统上可能会有所不同。 如何使用符号信号 (-SIGCONT) 而不是数字信号 (-18) 提交此作业? linux unix shell signals at 2 个回答 Voted womble 2009-05-06T23:45:43+08:002009-05-06T23:45:43+08:00 我的猜测是,您在工作中使用的任何外壳都与您在命令行中使用的外壳不同,并且在工作外壳中没有内置的知道符号信号符号的 kill 。这在 Ubuntu 上很常见,它使用 dash 表示 /bin/sh(默认情况下由 at 使用),但 /bin/bash 用于交互式 shell。 您可以通过指定路径来使用“kill”二进制文件: echo "/bin/kill -CONT $rspid" | at now + 2 minutes 或者指定要显式执行的 shell: echo "/bin/bash -c \"kill -CONT $rspid\"" |at now + 2 minutes 我认为有一个选项可以告诉您使用什么外壳,但我现在似乎找不到任何提及它的内容。也许shebang会起作用... Best Answer Dennis Williamson 2009-05-07T20:03:21+08:002009-05-07T20:03:21+08:00 事实证明,dash 喜欢 -CONT 形式的信号并且不理解 -SIGCONT 样式。由于 bash 两者都理解,因此使用前者可能更便携。 在我的测试中,我是否包含了“kill”的显式路径并没有任何区别,但指定信号的方式确实如此。
我的猜测是,您在工作中使用的任何外壳都与您在命令行中使用的外壳不同,并且在工作外壳中没有内置的知道符号信号符号的 kill 。这在 Ubuntu 上很常见,它使用 dash 表示 /bin/sh(默认情况下由 at 使用),但 /bin/bash 用于交互式 shell。
您可以通过指定路径来使用“kill”二进制文件:
或者指定要显式执行的 shell:
我认为有一个选项可以告诉您使用什么外壳,但我现在似乎找不到任何提及它的内容。也许shebang会起作用...
事实证明,dash 喜欢 -CONT 形式的信号并且不理解 -SIGCONT 样式。由于 bash 两者都理解,因此使用前者可能更便携。
在我的测试中,我是否包含了“kill”的显式路径并没有任何区别,但指定信号的方式确实如此。