Gibt es eine Möglichkeit, in Java regelmäßig einen Unix-Befehl (ps
in meinem Fall) auszuführen? Die Schleife, die ich schrieb:Unix-Befehl in Java wiederholen
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();
}
}
}
funktioniert nicht. Es läuft beim ersten Mal einwandfrei, aber es sind immer noch 0 Bytes aus dem Eingabestrom verfügbar. Ich würde versuchen, den watch
Befehl, aber diese Solaris-Box hat das nicht. Ich kann keinen Cron-Job verwenden, da ich wissen muss, ob die PID in der Java-Anwendung vorhanden ist. Irgendwelche Ideen?
Vielen Dank im Voraus.
EDIT: kann nicht Cron-Job
EDIT: Ich bin eine neue Thread
des gleichen Typs zu machen (PS) nach dem Schluss gelangt, so dass ich auf jeden Fall eine neue Process jedes Mal machen.
EDIT: Ich legte die Schleife, die nicht funktioniert wieder da es Verwirrung verursacht.
Ich sehe keine Schleife. –
Setzen Sie die Schleife zurück, um Verwirrung zu vermeiden – geowa4