我正在做linux的工作。
,考虑到正在运行的程序的PID,有什么方法可以获得用户定义的程序名吗?
我想输出的是程序名,而不是进程名.
例如:我有一个名为stackoverflow.java的java应用程序。现在进程名将由不同的系统来决定,但是程序名是stackoverflow.java。因此,输出应该是程序名,只给出运行程序的PID。
有一些命令正在满足部分需求,例如:
cat /proc/ "PID“/cmdline -> --这将给出用给定的”PID“创建该进程的命令行参数。但是如果我们用不同的编程语言有不同的程序,那么运行这个程序的命令的格式就会不一样了。那么在这种情况下,如何从这个命令中提取出确切的程序名呢?
readlink -f /proc/ "PID“/exe -> --这将给出与给定的”PID“相关的可执行文件名。但是有些进程没有可执行文件。在这种情况下,它不会返回任何东西。
发布于 2017-06-29 23:20:19
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(注意:对于在命令名中包含空格的命令,这是行不通的。)
https://stackoverflow.com/questions/44781021
复制相似问题