2017-02-14 108 views
0

在特定的时间量(运行未编译时)后,是否可以从终端自动终止java程序的执行。 比如,我喜欢10秒后停止如下:从终端自动终止java进程

java examples.Example 
+0

如果你知道进程ID(PID),我想,“睡眠10;杀PID”将诀窍吗? – user2660966

+0

这可能是可能的,但我认为这是更多的服务器管理问题。这取决于操作系统 – Andremoniy

+0

如何将其添加到同一行? – Razieh

回答

2

如果您不需要观看过程的输出:

#!/bin/bash 
{ 
    java examples.Example >/some/place.log & 
    echo $! 
    wait $! 
} | { 
    sleep 10 
    kill $(read PID; echo $PID) 
} 

这个脚本会在启动您的过程subshel​​l,将其PID发送到等待的子shell,等待10秒并杀死它。

如果你知道你的过程将始终需要更长的时间超过10秒,你可以简单地这样做:

java examples.Example >/some/place.log & 
sleep 10 
kill $! 
+0

不需要管道。 'sleep'/'kill'进程既不需要也不关心另一个命令的标准输出。 – chepner

+0

@chepner管道是这样的,第一个子shell可以将PID回显到第二个。它也允许并行创建两个子壳体。 –

+1

它不需要。 'java ...&java_pid = $ !; (睡10;杀$ java_pid)&'。 – chepner