有没有办法在Java中定期运行Unix命令(在我的情况下是ps
)?我写的循环:在Java中重复Unix命令
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();
}
}
}
不起作用。它第一次运行得非常好,但每次输入流中都有0个字节可用。我试试watch
命令,但是这个Solaris盒没有这个命令。我不能使用cron作业,因为我需要知道PID是否存在于Java应用程序中。有任何想法吗?
在此先感谢。
编辑:不能使用cron作业
编辑:我正在做同一类型(PS)的新Thread
它结束后,所以我每次都无疑使新的ProcessBuilder。
编辑:我把环没有工作回来,因为它造成混乱。
我没有看到一个循环。 – 2009-06-24 19:00:17
把环路放回来避免任何混淆 – geowa4 2009-06-24 19:29:56