2017-02-14 5 views
0

Ist es möglich, die Ausführung eines Java-Programms vom Terminal automatisch nach einer bestimmten Zeit (wenn nicht Compiling läuft) zu töten. Zum Beispiel, wie ich folgende nach 10 Sekunden stoppen:Kill Java-Prozess vom Terminal automatisch

java examples.Example 
+0

, wenn Sie die Prozess-ID kennen (pid) Ich nehme an, dass „sleep 10; pid töten“ würde Mache den Trick? – user2660966

+0

Das ist möglicherweise möglich, aber es ist mehr Serververwaltung Frage, denke ich. Und es hängt von OS – Andremoniy

+0

wie kann ich es in der gleichen Zeile hinzufügen? – Razieh

Antwort

2

Wenn Sie den Ausgang des Prozesses nicht aufpassen müssen:

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

Dieses Skript Ihres Prozess in einem startet Subshell, überträgt seine PID an die wartende Subshell, die 10 Sekunden lang wartet und sie abbricht.

Wenn Sie wissen, dass Ihr Prozess wird immer länger dauern als 10 Sekunden, können Sie einfach tun:

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

Es gibt keine Notwendigkeit für das Rohr. Der 'sleep' /' kill'-Prozess benötigt weder die Standardausgabe des anderen Befehls noch kümmert er sich darum. – chepner

+0

@chepner die Pipe ist so, dass die erste Subshell kann die PID auf die zweite Echo. Es ermöglicht auch die parallele Erstellung der zwei Subshells. –

+1

Es muss nicht. 'java ... & java_pid = $ !; (Schlaf 10; kill $ java_pid) & '. – chepner