我在Linux上工作。
有没有办法得到用户定义的程序名,给定运行程序的PID?
我想输出程序名,而不是进程名。
例如:我有一个Java应用程序,名为stackoverflow.java。现在进程名将由系统决定,系统可以不同,但程序名是stackoverflow.java。所以输出应该是程序名,只给出运行程序的PID。
有些命令正在满足部分需求,例如:
cat/proc/“pid”/命令行->
这将给出命令行参数,用于创建具有给定“pid”的进程。但是如果我们有不同编程语言的不同程序,那么运行该程序的命令的格式将不同。那么在这种情况下,如何从这个命令中提取确切的程序名呢?
readlink-f/proc/”pid“/exe->这将给出与给定“pid”的进程相关的可执行文件名。但有些进程没有可执行文件。在这种情况下,它不会返回任何内容。

最佳答案

ps实用程序执行此操作。例如,

$ ps 12345
  PID TTY      STAT   TIME COMMAND
12345 pts/1    S      0:00 sleep 20

以下是如何请求命令:
$ ps -o command 12345
COMMAND
sleep 20

所以你只需要删除第一行:
$ ps -o command 12345 |awk 'NR>1'
sleep 20

如果只需要不带参数的命令:
$ ps -o command 12345 |awk 'NR>1 { print $1 }'
sleep

(注意:对于名称中带有空格的命令,这不起作用。)

关于linux - 如何使用正在运行的程序的PID获得实际的程序名称?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44781021/

10-11 23:22
查看更多