Answers:
在所有符合POSIX的系统上,对于Linux,您可以使用ps
:
ps -p 1337 -o comm=
在此,通过过程的PID选择过程-p
。该-o
选项指定输出格式,comm
即命令名称。
另请参阅:ps
–开放组基本规范第6期
command
代替修复它。
$ ps -p 1 -o comm=
init $ ps -p 1 -o command=
/ sbin / init;这意味着它不是大约15个字符,可能只是二进制文件的名称及其完整路径。
comm
给出二进制文件的名称并command
返回参数0
您可以从以下位置找到进程名称或process-id或pid使用的命令
/proc/pid/cmdline
通过做
cat /proc/pid/cmdline
pid是您要为其查找名称
例如exmaple 的pid :
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
要查找pid 2480使用的进程名称,您可以
# cat /proc/2480/cmdline
gnome-terminal
ps -a
列出与终端关联的所有进程,不需要任何输入。
ps
版本,procps version 3.2.7
工作正常。
您可以使用pmap。我正在搜索PID6649。并删除多余的过程详细信息。
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
ps
命令您将看到的仅仅是java
,但是传递的其余参数将使用完整显示pmap
。
您也可以将awk与ps结合使用
ps aux | awk '$2 == PID number for a process { print $0 }'
例:
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
打印HEAD LINE,您可以使用
ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
(or)
ps --headers aux |head -n 1; ps aux | awk '$2 == 1 { print $0 }'
root@cprogrammer:~# ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
ps ax | grep 1
查看它是否确实返回了该init
过程。(在我的情况下,它返回119行-不理想。)
ps aux | awk 'NR==1 || $2==PID'
-,{print $0}
因为这是默认设置,因此无需多说。但是正如您所评论的,-p
还是更好。
与slhck的Answer类似,但依赖于文件操作而不是命令调用:
MYPID=1
cat "/proc/$MYPID/comm"
cat /proc/1/comm
=> init,而不是/ sbin / init。他的回答包括更长的版本。但是无论如何+1。
令人惊讶的是,没有人提到ps的-f(完整命令)选项。我喜欢将它与-e(所有)一起使用,并将结果通过管道传递到grep,以便缩小搜索范围。
ps -ef | grep <PID>
这对于查看正在运行的正在占用系统大量资源的完整命令也非常有用。这将向您显示传递给命令的选项和参数。
-e -f
有可用的地方,grep
也会产生许多错误匹配,例如,grep 33
包括pid = 933或339,ppid = 33或933或339,使用时间为33秒或33分钟,或者包含33的程序名或自变量-包括其grep
自身。所有(AFAIK)ps
都有-p
,所以ps -fp 33
。
ps
或ls -l /proc/$PID/exe