2 Stimmen

Wiederholung von Unix-Befehlen in Java

Gibt es eine Möglichkeit, einen Unix-Befehl regelmäßig auszuführen ( ps in meinem Fall) in Java? Die Schleife, die ich geschrieben habe:

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. Beim ersten Mal läuft es einwandfrei, aber danach sind jedes Mal 0 Bytes aus dem Eingabestrom verfügbar. Ich würde versuchen, die watch Befehl, aber dieser Solaris-Rechner hat das nicht. Ich kann keinen Cron-Job verwenden, da ich wissen muss, ob die PID in der Java-Anwendung vorhanden ist. Hat jemand eine Idee?

Vielen Dank im Voraus.

EDIT: Cron-Job kann nicht verwendet werden

EDIT: Ich mache eine neue Thread desselben Typs (PS), nachdem er abgeschlossen ist, so dass ich definitiv jedes Mal einen neuen ProcessBuilder erstelle.

EDIT: Ich habe die Schleife, die nicht funktioniert hat, wieder eingefügt, da sie für Verwirrung gesorgt hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X