0

大きな厄介なps文字列からいくつかの情報を解析する必要があります。ユーザー名とPIDを取得してから、/ usr / user /java.instanceName/の部分を1行にまとめる必要があります。

grep、sed、awkを試しましたが、どれもよくわかりません。そして、この簡単なタスクを何時間も読んだ後、誰かが簡単なワンライナーをタップできることを願っています。

これは私が尋ねる前に試した最後のことです:

ps auxwww | sed 's/^[a-z]* *[0-9]*//g;s/\/usr\/user\/[a-z._0-9]*//g'

psauxwwwコマンドからの標準は次のとおりです。

ルート38372.532.5 4697784 2657720?Sl Sep13 30:23 / usr / java / jdk16 / bin b.WebService.port = 80 -Dorg.jboss.naming.NamingService.port = 90 -Dorg.jboss.na mi.port =90-Dorg.jboss.invocation。 jrmp.server.JRMPInvoker.port = 40 -Dorg.jbos server.PooledInvoker.port = 41 -Dorg.jboss.remoting.transport.Connector.port = 42 ing.transport.Connector.messaging.port =180-Dorg.jboss。 remoting.transport.Conn 1 -Djboss.bind.address = 10.0.0.1 -Dtomcat.bind.address = 10.0.0.1 -Dtomca cat.https.port = 443 -Djava.net.preferIPv4Stack = true
che.cluster.name = cluster =INVALIDATION_ASYNC
cache.mcast.port = 457 -Dejb3.cache.mode = LOCAL -Dejb3.cache.cluster.name = EJB3-en ss.platform.mbeanserver -Djavax.management.builder.initial = org.jboss.system.serv ilderImpl- server -Dsun.security.ssl.allowUnsafeRenegotiatio
ed.dirs = / usr / user / java.instanceName / lib / endorsed -Dsun.rmi.dgc.client.gcInte mi.dgc.server.gcInterval = 3600000 -Djavax.net.ssl .trustStore = / usr / java / jdk16 / jre / -Djavax.net.ssl.trustStorePassword = pass123 -Djavax.net.ssl.trustStoreType = JKS pGC -XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled -XX:+ UseParNewG m- XX:PermSize = 512m -XX:MaxPermSize = 512m -jar run.jar -c jvmname -b 10.0.1.1

4

1 に答える 1

1

私はこれがうまくいくと思います:

ps auxww | sed -n -e '/java.instanceName/s;\(^[a-z]* *[0-9]*\).*\(/usr/user/java.instanceName[A-Za-z._0-9/]*\) .*;\1 \2;p'

これは次のように分類されsed -nます。すべての行でデフォルトの印刷アクションをオフにします。/java.instanceName/そのパターンを含む行のみを選択します。このsコマンドは、パターンの後半で使用される;ため、区切り文字として使用されます。そのままで、行の先頭にあるユーザーとPIDと一致しますが、一致したものを正確に保存するという追加の効果があります。次に、接頭辞が付いたパスに一致するまですべてをスキップします(大文字とを含むように文字クラスを微調整しました)-将来の使用のために保存されます。最後に、そのパスの後のスペースと他のすべてが一致します。このパーツは、一致全体を、保存した2つのサブパーツに置き換えて印刷します。/\(^[a-z]* *[0-9]*\)\(/usr/user/...[A-Za-z._0-9/]*\)/usr/user//;\1 \2;p

于 2012-09-14T18:48:38.473 に答える