Existe-t-il un moyen d'exécuter périodiquement une commande Unix (ps
dans mon cas) en Java? La boucle que j'ai écrite:Répéter une commande Unix en Java
while(this.check)
{
try
{
ProcessBuilder pb = new ProcessBuilder("ps");
Process proc;
System.out.println(" * * Running `ps` * * ");
byte[] buffer;
String input;
proc = pb.start();
BufferedInputStream osInput =
new BufferedInputStream(proc.getInputStream());
//prints 0 every time after the first
System.out.println(osInput.available());
buffer = new byte[osInput.available()];
osInput.read(buffer);
input = new String(buffer);
for(String line : input.split("\n"))
{
if(line.equals(""))
continue;
this.handlePS(line);
}
proc.destroy();
try
{
Thread.sleep(10000);
}
catch (InterruptedException ie)
{
ie.printStackTrace();
}
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
ne fonctionne pas. Il fonctionne parfaitement bien la première fois, mais il y a 0 octets disponibles à partir du flux d'entrée chaque fois après cela. Je vais essayer la commande watch
, mais cette boîte Solaris n'a pas cela. Je ne peux pas utiliser un travail cron car j'ai besoin de savoir si le PID est là dans l'application Java. Des idées?
Merci d'avance.
EDIT: ne peut pas utiliser Cron emploi
EDIT: Je fais une nouvelle Thread
du même type (PS) après conclut, donc je fais sans aucun doute une nouvelle ProcessBuilder chaque fois.
EDIT: J'ai mis la boucle qui n'a pas fonctionné car cela a causé de la confusion.
Je ne vois pas une boucle. –
remettre la boucle pour éviter toute confusion – geowa4