我不想在某个时间点运行外部程序(subl - sublime text),我想运行 确定多少时间。我基本上需要启动程序10秒然后多次杀死它 - 因为它的安装和更新过程。
我该怎么做?
答案 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"