では、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
Javaアプリケーションの場合、出力部分は常にps -ef
次のようになります。
org.apache.hive.beeline.BeeLine
これは、ここに示すJavaクラス構造であるHive関連プロセスです。 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を処理するときにアプリケーションに大きく依存するため、難しいです。