我想在几秒钟SIGNAL
后发送到一个进程。.5
也许这不是一个好主意,但我想为一个不常见的临时案例做这件事。
我试过跟随,但它不起作用。
(sleep .5;kill -9)| some_process
信号不指向管道;它们被定向到进程标识符(pids)。我可能会尝试这样的事情:
some_process & sleep .5; kill -KILL $!
它将some_process
在后台运行(这就是它的&
用途)。半秒后,它将使用$!
指示最后一个后台进程的 pid 的变量。
(尽管sleep
在某些系统上只接受整数。)
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
如果我正确理解了您的问题,应该可以解决问题。