У меня странные проблемы с этим.
Мы используем менеджер виртуальных рабочих столов Xvfb и хотим убедиться, что он работает, прежде чем я продолжу.Используя чистую оболочку, я мог бы легко это сделать:
ps -ef | grep Xvfb | grep -v grep
И это дает мне именно то, что мне нужно, одну строку, содержащую информацию о процедуре Xvfb.Далее я хочу включить это в свою Java-программу, проанализировать результаты и сохранить PID запущенного процесса Xvfb.Итак, я пытаюсь это сделать:
String line;
try {
Process p = Runtime.getRuntime().exec("ps -ef | grep Xvfb | grep -v grep");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null)
{
System.out.println(line);
}
} catch (Exception err) {
System.out.println(err);
}
Странно то, что если я использую "ps -ef", я получаю огромный список процессов, сбрасываемых на мою консоль при запуске моего приложения.Но если я использую |grep, чтобы сузить список возвращаемых процессов, я получаю ноль результатов.input.readLine () получает значение null каждый раз.
Я также пытался:
ps -ef | grep Xvfb | grep -v grep | awk {'print $2'}
Просто захватить идентификатор процесса.Кроме того, не повезло.
Кто-нибудь еще испытывал это или знает, что я делаю неправильно?