에서는 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를 처리할 때 애플리케이션에 크게 의존하기 때문에 어렵습니다.