如何获取 Linux 中某个进程的完整 cmd?

如何获取 Linux 中某个进程的完整 cmd?

我的进程 cmd 很长,因为有很多参数。现在我想检查完整的 cmd。通过使用cat /proc/PROCESS_NUMBER/cmdline,cmd 无法完全显示。还有其他方法可以在 linux 中准确查看完整的 cmd 吗?

答案1

你的命令行有多长?

如果文件大小在兆字节范围内,你也许可以重新编译内核,在文件ARG_MAX中使用更大的文件linux-3.*/include/linux/limits.h。我把

#define ARG_MAX  2097152    /* # bytes of args + environ for exec() */

(也可能有一种方法可以动态设置该限制,但我忘了如何做,而且我可能是错的)

我确实喜欢大ARG_MAX限制,因为我偶尔会使用我的交互式 shell**/*.c的全局扩展功能。zsh

不要输入太大的值ARG_MAX;我猜你想让它小于可用 RAM 的 2%。

注意/proc/*/cmdline包含空字节。你可以翻译它们,参见

附加物

如果出于某种原因您无法负担较大的命令行,请找到某种方法和惯例来避免使用如此大量的程序参数。例如,您可以修改调用的程序以从文件或其他来源(数据库?)读取某些内容。例如,一些 Unix 程序(例如 GCC)接受@文件名从某个名为的文件中读取选项文件名

相关内容