Отличное слово - PullRequest
       29

Отличное слово

3 голосов
/ 15 ноября 2008

Я хотел выполнить grep для процесса Java, а затем найти максимальную используемую память кучи. Я попробовал это

def ex =['sh','-c','ps -aef | grep Xmx']
String str =  ex.execute().text

, тогда как str имеет что-то вроде java -Xmx1024M / kv / classes / bebo / -Xms512M Как извлечь значение 1024M ? Я планировал использовать Java Regex, но подумал, что кто-то может знать крутой способ в Groovy.

Ответы [ 3 ]

5 голосов
/ 15 ноября 2008

Вот отличная версия, которая не требует grep (или sed :):

("ps -aef".execute().text =~ /.*-Xmx([0-9]+M).*/).each { full, match -> println match } 
0 голосов
/ 15 ноября 2008

Если все, что вам нужно, это значение после Xmx, вы можете получить это значение из ex:

def ex =['sh','-c',"ps -aef | grep Xmx | sed -e 's/^.*Xmx\([0-9]*[mM]*\) *$/\1/'"]; 
String str = ex.execute().text;

Команда sed преобразует вывод ps в бит, который выводится из ps перед возвратом.

0 голосов
/ 15 ноября 2008

В Java:

String ResultString = null;
Pattern regex = Pattern.compile("-Xmx(\\d+M)");
Matcher regexMatcher = regex.matcher(str);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group(1);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...