2013-02-06 45 views
0

我想在.5秒后发送SIGNAL进程。通过PIPE发送Unix/Linux信号

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

我试过像下面,但它不工作。

(sleep .5;kill -9)| some_process 

回答

1

sleep .5; kill -9 $(pidof some_process)应该工作。 pidof返回进程名称的进程ID。 $()将命令的结果返回给kill命令。另一种方法是:对细节

sleep .5; pidof some_process | xargs kill -9

检查man pidof

编辑:也有timeouttimeout -s SIGKILL 0.5s some_process应该做的伎俩,如果我正确地理解你的问题。

+0

我要杀死的过程这是本'PIPE'后号。这个'some_process'不是一个不同的过程。 – Suku

+0

基本上,我不会得到'some_process'的pid。所以需要通过管道发送'SIGNAL'到'some_process' – Suku

+1

所以这个过程应该开始,应该在0.5秒后被杀死?也许'人超时'在这里有帮助吗? 'timeout -k'例如? –

5

信号不针对管道;他们被引导到处理标识符(pid)。我可能会尝试这样的事:

some_process & sleep .5; kill -KILL $! 

这会在后台运行some_process(这是什么&是)。半秒钟后,它将使用变量$!,它指示最后一次后台处理的pid。

(虽然sleep在某些系统仅接受的整数。)