어떤 스크립트/바이너리/기타 프로세스가 실행되고 있는지 어떻게 알 수 있나요?

어떤 스크립트/바이너리/기타 프로세스가 실행되고 있는지 어떻게 알 수 있나요?

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

관련 정보