java - 为什么当我输入 "ps -ef | grep java"时,Linux 操作系统上的 java 进程在 java 命令中没有显示 -classpath?

标签 java linux shell hadoop process

当我输入以下 shell 命令“ps -ef | grep java”时,我遇到了有关 java 命令的问题。 我得到以下命令,显示两个 java 进程

第一个进程类似于“java -Dxxx org.apache.hadoop.hdfs.server.namenode.NameNode”,它没有指定-classpath选项。这个命令让我很困惑我不知道它如何找到“org.apache.hadoop.hdfs.server.namenode.NameNode”的类以及它依赖的其他类或jar

第二个进程就像“java -Dxxx -classpath xxx.jar org.apache.hadoop.yarn.server.resourcemanager.ResourceManager”,这对我来说很有意义 noraml java 命令应该是什么样子。

任何人都可以帮我解释为什么第一个命令没有类路径吗?

//first process

root      4116     1  0 Jan30 ?        00:07:55 /root/jdk1.8.0_181/bin/java -Dproc_namenode -Xmx1000m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/root/hadoop-2.8.5/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/root/hadoop-2.8.5 -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,console -Djava.library.path=/root/hadoop-2.8.5/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/root/hadoop-2.8.5/logs -Dhadoop.log.file=hadoop-root-namenode-hdfs01.log -Dhadoop.home.dir=/root/hadoop-2.8.5 -Dhadoop.id.str=root -Dhadoop.root.logger=INFO,RFA -Djava.library.path=/root/hadoop-2.8.5/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Dhadoop.security.logger=INFO,RFAS -Dhdfs.audit.logger=INFO,NullAppender -Dhadoop.security.logger=INFO,RFAS -Dhdfs.audit.logger=INFO,NullAppender -Dhadoop.security.logger=INFO,RFAS -Dhdfs.audit.logger=INFO,NullAppender -Dhadoop.security.logger=INFO,RFAS org.apache.hadoop.hdfs.server.namenode.NameNode

//second process

root      4595     1  0 Jan30 pts/0    00:28:38 /root/jdk1.8.0_181/bin/java -Dproc_resourcemanager -Xmx1000m -Dhadoop.log.dir=/root/hadoop-2.8.5/logs -Dyarn.log.dir=/root/hadoop-2.8.5/logs -Dhadoop.log.file=yarn-root-resourcemanager-hdfs01.log -Dyarn.log.file=yarn-root-resourcemanager-hdfs01.log -Dyarn.home.dir= -Dyarn.id.str=root -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.library.path=/root/hadoop-2.8.5/lib/native -Dyarn.policy.file=hadoop-policy.xml -Dhadoop.log.dir=/root/hadoop-2.8.5/logs -Dyarn.log.dir=/root/hadoop-2.8.5/logs -Dhadoop.log.file=yarn-root-resourcemanager-hdfs01.log -Dyarn.log.file=yarn-root-resourcemanager-hdfs01.log -Dyarn.home.dir=/root/hadoop-2.8.5 -Dhadoop.home.dir=/root/hadoop-2.8.5 -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.library.path=/root/hadoop-2.8.5/lib/native -classpath /root/hadoop-2.8.5/etc/hadoop:/root/hadoop-2.8.5/etc/hadoop:/root/hadoop-2.8.5/etc/hadoop:/root/hadoop-2.8.5/share/hadoop/common/lib/*:/root/hadoop-2.8.5/share/hadoop/common/*:/root/hadoop-2.8.5/share/hadoop/hdfs:/root/hadoop-2.8.5/share/hadoop/hdfs/lib/*:/root/hadoop-2.8.5/share/hadoop/hdfs/*:/root/hadoop-2.8.5/share/hadoop/yarn/lib/*:/root/hadoop-2.8.5/share/hadoop/yarn/*:/root/hadoop-2.8.5/share/hadoop/mapreduce/lib/*:/root/hadoop-2.8.5/share/hadoop/mapreduce/*:/root/hadoop-2.8.5/contrib/capacity-scheduler/*.jar:/root/hadoop-2.8.5/contrib/capacity-scheduler/*.jar:/root/hadoop-2.8.5/contrib/capacity-scheduler/*.jar:/root/hadoop-2.8.5/share/hadoop/yarn/*:/root/hadoop-2.8.5/share/hadoop/yarn/lib/*:/root/hadoop-2.8.5/etc/hadoop/rm-config/log4j.properties org.apache.hadoop.yarn.server.resourcemanager.ResourceManager

最佳答案

脚本运行export CLASSPATH=$(hadoop classpath)或在$HADOOP_HOME下查找jar。

-classpath 不是必需的 Java 参数

您还可以使用jps来查看正在运行的Java进程,这是Hadoop文档建议的

关于java - 为什么当我输入 "ps -ef | grep java"时,Linux 操作系统上的 java 进程在 java 命令中没有显示 -classpath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60025812/

相关文章:

linux - Bash 有颜色、粗体和带下划线的字符。为什么不是斜体?

java - 尝试在 Java 中使用 Gmail API 发送电子邮件时出错

java - Java中描述实例和参数的方法的执行顺序?

c - 为什么 mkdir() 和 rmdir() POSIX 系统调用在不同的头文件中?

python - 如何使用 python 脚本启动/终止应用程序?

linux - 无法在ubuntu中启动mongo shell

linux - 带有操作符后跟管道的 Shell 命令

java - ejb3 中的准备语句

java - 球不会在屏幕上移动

java - Linux 上的 Java 实时事件调度入门?