1

我想在 linux 上经过指定时间后强制终止程序。我发现linux中的'timeout' util可以在指定时间后杀死程序,但它不接受MILLISECONDS。也就是说,“timeout TIME ./PROGRAM”会在 TIME 过去后杀死 PROGRAM,其中 TIME 不是毫秒而是秒。在 linux SHELL上经过一些 MILLISECONDS 之后,有没有办法杀死一个进程?任何意见将不胜感激。

4

3 回答 3

4

你可以这样做:

#!/bin/bash

#execute command in background
<command> & 

#get process ID
PROC=$! 

#sleep for 10 milliseconds then kill command
(usleep 10000; kill $PROC) & 

#bring back the process ID, finish command or kill it
fg $PROC 
于 2013-05-07T16:58:51.317 回答
4

最新版本的超时实际上也支持毫秒。您可以将等待时间提供为浮点数。例如

$timeout 0.003s sleep 0.003 && echo foo
$

尽管

$ timeout 0.003s sleep 0.001 && echo foo
foo
于 2015-11-03T15:39:50.527 回答
-1

你可以使用一个函数,接受毫秒值

timeout_m ()
{
  $2 &
  for (( y=0; y<$1*50; y++ ))
  do
    :
  done
  kill $!
}
于 2013-05-07T15:34:14.717 回答