从终端

时间:2016-04-29 12:46:24

标签: linux bash terminal

我不想在某个时间点运行外部程序(subl - sublime text),我想运行 确定多少时间。我基本上需要启动程序10秒然后多次杀死它 - 因为它的安装和更新过程。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

使用timeout

timeout 5s <program>

您还可以指定需要传递的信号以终止该过程。

timeout -s9 5s <program>

(OR)

timeout --signal=KILL 5s <program>

<强>测试

$ time timeout 5s sleep 40

real    0m5.002s
user    0m0.001s
sys     0m0.001s

答案 1 :(得分:2)

您的系统上可能有timeout命令,该命令使用标准警报信号来终止进程。我从来没有完全理解为什么没有shell作为内置提供对此功能的访问。如果您的系统上没有timeout,则可以使用

进行模拟
my_program & pid=$!
sleep 10
kill "$pid"

答案 2 :(得分:0)

我最终在我的剧本中使用了这个

/usr/bin/subl
SPID="$(ps -A | grep sublime_text | awk '{print $1}')"
sleep 5
kill "$SPID"
unset "$SPID"