linux:ps截断命令行输出

时间:2014-04-28 10:33:36

标签: java linux mint

我的目标是获取java进程的命令行参数。我正在运行ps aux | grep java> out.log以查看完整的参数列表。问题是它被截断大约4k字节。 Java是从构建工具(maven)调用的,因此我对参数没有太大影响。大多数长参数列表与类路径条目相关。在Windows平台上,参数列表大约为12Kb。

如果Linux中的命令行参数长于4K,我怎样才能看到完整的命令行参数?我在Linux Mint Petra上运行。我已尝试使用进程资源管理器,但它也会截断(并且它不会让我复制粘贴参数)

4 个答案:

答案 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>