2017-02-14 1 views
0

Est-il possible de tuer automatiquement l'exécution d'un programme java à partir du terminal après un certain laps de temps (lors de l'exécution ne compilant pas). Par exemple, je me arrêter, après 10 secondes:Tuer le processus java à partir du terminal automatiquement

java examples.Example 
+0

si vous connaissez le numéro de processus (pid) Je suppose que « le sommeil 10, tuer pid » serait faire l'affaire? – user2660966

+0

C'est peut-être possible, mais c'est plus question de l'administration du serveur, je pense. Et cela dépend de OS – Andremoniy

+0

comment puis-je l'ajouter dans la même ligne? – Razieh

Répondre

2

Si vous n'avez pas besoin de regarder la sortie du processus:

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

Ce script va lancer votre processus dans un sous-shell, transmettre son PID au sous-shell en attente, qui attendra 10 secondes et le tuer.

Si vous savez que votre processus sera toujours prendre plus de 10 secondes, vous pouvez simplement faire ceci:

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

Il n'y a pas besoin de tuyau. Le processus 'sleep' /' kill' ne nécessite ni ne se soucie de la sortie standard de l'autre commande. – chepner

+0

@chepner le tuyau est de sorte que le premier sous-shell peut faire écho le PID à la seconde. Il permet également la création parallèle des deux sous-couches. –

+1

Ce n'est pas nécessaire. 'java ... & java_pid = $ !; (dors 10, tuez $ java_pid) & '. – chepner