如何在 at 工作中使用符号信号?

Den*_*son 0 linux unix shell at signals

这个关于 SO 的答案中,我举了一个例子,它应该在提交给at的作业中使用 -SIGCONT 信号。但是,我发现我用 -SIGSTOP 停止的进程并没有继续。当我将信号更改为数值时,它起作用了。

echo "kill -18 $rspid"|at now + 2 minutes
Run Code Online (Sandbox Code Playgroud)

使用数值是一个坏主意,因为它在不同的系统上可能不同。

如何使用符号信号 (-SIGCONT) 而不是数字信号 (-18) 提交此作业?

wom*_*ble 7

我的猜测是,您的 at 工作使用的任何 shell 与您在命令行中使用的 shell 不同,并且 at 工作 shell 没有内置的 kill 知道符号信号符号。这在 Ubuntu 上很常见,它对 /bin/sh 使用破折号(默认情况下由 at 使用),但对交互式 shell 使用 /bin/bash。

您可以通过指定路径来使用“kill”二进制文件:

echo "/bin/kill -CONT $rspid" | at now + 2 minutes
Run Code Online (Sandbox Code Playgroud)

或者指定要显式执行的 shell:

echo "/bin/bash -c \"kill -CONT $rspid\"" |at now + 2 minutes
Run Code Online (Sandbox Code Playgroud)

我认为有一个选项可以告诉使用哪个 shell,但我现在似乎找不到任何提及。也许shebang会起作用......