3

Javaプロセスをgrepして、使用されている最大ヒープメモリを見つけたかったのです。私はこれを試しました

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

while java -Xmx1024M /kv/classes/bebo/ -Xms512Mstrのようなものがあります1024M の値を抽出するにはどうすればよいですか? 私は Java 正規表現を使用することを計画していましたが、誰かが groovy でクールな方法を知っているかもしれないと思っていました。

4

3 に答える 3

5

grep (または sed :) を必要としないグルーヴィーなバージョンを次に示します。

("ps -aef".execute().text =~ /.*-Xmx([0-9]+M).*/).each { full, match -> println match } 
于 2008-11-15T17:39:38.170 に答える
0

Java の場合:

String ResultString = null;
Pattern regex = Pattern.compile("-Xmx(\\d+M)");
Matcher regexMatcher = regex.matcher(str);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group(1);
} 
于 2008-11-15T07:55:24.170 に答える
0

Xmx の後の値だけが必要な場合は、次の例から値を返すことができます。

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

sed コマンドは、ps の出力を、返される前に ps から出てくるビットだけに変換します。

于 2008-11-15T09:22:47.970 に答える