2017-02-14 159 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