我需要一个 Linux 命令来获取 java.io.tmpdir 的当前值 另外你能告诉我获取所有系统属性的命令吗?
JDK 提供了可以实现目标的工具。使用指定的命令,可以显示系统变量的值
java.io.tmpdir
。
jinfo <process id> | grep "java.io.tmpdir"
<process id>
是要显示系统变量值的java进程的编号。您可以使用jps
工具获取java进程的ID,该工具列出了您机器上运行的所有java进程。
要查看java进程的所有系统变量,请使用此命令
jinfo <process id>
所有JDK工具都位于
$JAVA_HOME/bin
目录中。
java.io.tmpdir
是java系统属性之一,所以它的值只存在于jvm内部。要找出 java.io.tmpdir
属性的值是什么,您还可以用 java 编写一个简单的程序。它可能看起来像这段代码:
public class JSystemProperties {
public static void main(String[] args) {
System.getProperties().list(System.out);
}
}
上面的代码将打印所有 java 系统属性,但您可以修改它以仅打印一个具有您通过
args
数组传递的名称的系统属性(使用 System.getProperty(key)
方法)。编译此类后,您可以创建脚本(它将运行编译后的 java 类),该脚本可以被视为 Linux 命令来获取 java 系统属性的当前值。
对于我过去部署的黑盒Java应用程序,我有时可以通过执行以下命令找到
java.io.tmpdir
的值:
ps -ef | grep java.io.tmpdir
特别是对于 Tomcat 应用程序,您可能会得到如下输出:
-Djava.io.tmpdir=/usr/local/tomcat/temp
现在推荐工具是jcmd,使用它就像:
jcmd $pid VM.system_properties | grep java.io.tmpdir
运行:
java -XshowSettings
并查找“java.io.tmpdir ="
”的值Property settings:
file.encoding = UTF-8
file.separator = /
java.class.path =
java.class.version = 61.0
java.home = /usr/lib/jvm/zulu17-ca
java.io.tmpdir = /tmp # <---- HERE