在我的开发盒上,下面/proc/[pid]/
有一个名为 的文件,comm
其中包含该进程的可执行文件的名称。我用它来验证我向其发送信号的进程。在我们的实时服务器上它不存在。两台机器都运行 Ubuntu 12.04.3 LTS(尽管实时服务器是虚拟化的)。在实时计算机上,可执行文件存在,cmdline
但当然带有必须解析的命令行参数。为什么一个实例有comm
而另一个实例没有?
答案1
您的虚拟机内核可能太旧或未配置为提供该/proc/PID/comm
文件。
根据 proc(5) 手册页,您也许可以使用 中的第二个字段/proc/[pid]/stat
。它被描述为:
可执行文件的文件名,位于括号中。无论可执行文件是否被换出,这都是可见的。
如果命令名称超过 16 个字符,则可能会被截断。