web-dev-qa-db-ja.com

どのスクリプト/バイナリ/その他の実行中のプロセスを知る方法は?

ps -ef | grep Javaから、このような多くのメモリを必要とするプロセスが見られます。

hadoop-+ 65369 65322  0 Jul06 ?        00:01:45 /usr/jdk64/jdk1.8.0_112/bin/Java -Xmx8024m -Dhdp.version=2.6.4-091 -Djava.net.preferIPv4Stack=true -Dhdp.version=2.6.4-091 -Dhadoop.log.dir=/var/log/hadoop/hadoop-qa -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/hdp/2.6.4-091/hadoop -Dhadoop.id.str=hadoop-qa -Dhadoop.root.logger=INFO,console -Djava.library.path=:/usr/hdp/2.6.4-091/hadoop/lib/native/Linux-AMD64-64:/usr/hdp/2.6.4-091/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx8024m -Xmx8024m -Djava.util.logging.config.file=/usr/hdp/2.6.4-091/Hive/conf/parquet-logging.properties -Dlog4j.configuration=beeline-log4j.properties -Dhadoop.security.logger=INFO,NullAppender org.Apache.hadoop.util.RunJar /usr/hdp/2.6.4-091/Hive/lib/Hive-beeline-1.2.1000.2.6.4-091.jar org.Apache.Hive.beeline.BeeLine -u jdbc:Hive2://master01.sys7643.com:10000/;transportMode=binary -e

どのスクリプト/バイナリ/その他がこのプロセスを実行しているかを知る方法は?

1
yael

Javaアプリケーションでは、常にps -ef出力の次のような部分になります。

org.Apache.Hive.beeline.BeeLine

これはHive関連のプロセスであり、これはここに示されているJavaクラス構造です。Javaアプリケーションが通常自分自身を呼び出す方法の変動性を考えると、プログラムで呼び出すことは困難です。これを解析するので、基本的にはps -ef出力からこれを視覚的に解析することを学ぶ必要があります。

次のようなものを使用して、出力を解析できます。

$ ps -ef |   sed 's/-D[^ ]*//g;s/-X[^ ]*//g;s#^.*/bin/Java##g;s/[^ ]*.jar//g;s/^[ ]*//g'
org.Apache.hadoop.util.RunJar  org.Apache.Hive.beeline.BeeLine -u jdbc:Hive2://master01.sys7643.com:10000/;transportMode=binary -e
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

これにより、ほとんどの場合、Javaを処理するときにアプリに大きく依存するため、最後のビットを解析するのが困難になります。

0
slm