我的目标是获取java进程的命令行参数。我正在运行ps aux | grep java> out.log
以查看完整的参数列表。问题是它被截断大约4k字节。 Java是从构建工具(maven)调用的,因此我对参数没有太大影响。大多数长参数列表与类路径条目相关。在Windows平台上,参数列表大约为12Kb。
如果Linux中的命令行参数长于4K,我怎样才能看到完整的命令行参数?我在Linux Mint Petra上运行。我已尝试使用进程资源管理器,但它也会截断(并且它不会让我复制粘贴参数)
答案 0 :(得分:3)
刚刚找到了这个解释how-do-i-increase-the-proc-pid-cmdline-4096-byte-limit。它基本上告诉我linux内核有一个硬限制(除非我想重新编译它)。对我来说最好的解决方案是运行jconsole。至少对java进程来说,这对我来说是个窍门。
答案 1 :(得分:2)
在Linux的cmdline缓冲区中存在4k的硬编码限制,因此除非您想下载内核的源代码并修改它以允许更大的缓冲区,否则您无法做到这一点。
作为一种解决方法,您可以使用-X选项执行maven以进行完全调试,并使用tee
写入标准输出以及文件:mvn -X clean install | tee my_log_file.txt
,然后尝试查找您所需的信息在my_log_file.txt中寻找
答案 2 :(得分:1)
你可以尝试
ps axwwo args
这显示了存储在流程表中的所有参数。
但正确的方法是更熟悉您的构建工具。如果你掌握了这个maven,你可以完美控制。
答案 3 :(得分:-1)
请注意一些,如何无法使用GUI工具。另一种方法是使用JDK中包含的jinfo
工具。请注意,您需要使用相同版本的JDK作为java,您正在运行(有时候使用JRE而不是JDK中的Java)。
只需使用jinfo <pid>