通过PIPE发送Unix / Linux SIGNAL

时间:2013-02-06 02:52:36

标签: linux bash signals pipe

我希望在SIGNAL秒后向.5发送一个(sleep .5;kill -9)| some_process

也许这不是一个好主意,但我想为一个不寻常的临时案例做这件事。

我试过跟随,但它不起作用。

{{1}}

2 个答案:

答案 0 :(得分:5)

信号不是针对管道的;它们被定向到进程标识符(pids)。我可能会尝试这样的事情:

some_process & sleep .5; kill -KILL $!

将在后台运行some_process(这是&的用途)。半秒后,它将使用变量$!,它表示最后一个后台进程的pid。

(虽然某些系统上的sleep只接受整数。)

答案 1 :(得分:1)

sleep .5; kill -9 $(pidof some_process)应该有效。 pidof返回进程名称的进程ID。 $()将命令的结果返回给kill命令。另一种选择是:

sleep .5; pidof some_process | xargs kill -9

查看man pidof了解详情。

编辑:还有timeout。如果我正确理解你的问题,timeout -s SIGKILL 0.5s some_process应该可以做到。