![如何获取 Linux 中某个进程的完整 cmd?](https://linux22.com/image/1338899/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%20Linux%20%E4%B8%AD%E6%9F%90%E4%B8%AA%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%AE%8C%E6%95%B4%20cmd%EF%BC%9F.png)
我的进程 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)接受@
文件名从某个名为的文件中读取选项文件名。