New Relic 中的命令名称和进程显示名称有什么区别?这些信息从何而来?

What is the difference between command name and process display name in New Relic? Where this information comes from?

在 New Relic 中,当我 SELECT * FROM ProcessSample 时,我可以看到字段 COMMAND NAMEPROCESS DISPLAY NAME。它们之间有什么区别,我可以在 bash 中使用什么命令来查看进程显示名称?

所以,为了说明,SELECT processId, commandName, processDisplayName FROM ProcessSample returns:

PROCESS ID COMMAND NAME PROCESS DISPLAY NAME
42 ruby sample_app

在我的例子中,sample_appsytemd 服务名称。

进程显示名称是一个虚构的字段,仅存在于 New Relic 中。 它不是来自过程本身。你无法在 bash 中获得它。它由 New Relic 决定,如您在 this entry in the New Relic data dictionary.

中所见

processDisplayName
The display name (friendly name) of the process.
This is derived from the command name by default, but if it can be determined that the process is associated with a service from the inventory system, New Relic uses the service name. Another source of the name may be a parsed component of the command line, if it is a known command line format (for example, Java app).

所以,它当然来自 运行 系统,但 New Relic 甚至可能只提取您所看到的部分内容。所以你不会在 Linux.

中找到相同的字段

这也解释了为什么您会在此处看到服务名称。