您的位置:

根据pid查看进程

在Linux系统中,有时我们需要查看某个进程的相关信息,而pid是唯一标识一个进程的值。下面从多个方面来讲解如何通过pid查看进程。

一、根据pid查看进程名

我们可以通过命令ps -p pid来查看指定pid的进程名。

$ ps -p 12345
  PID TTY          TIME CMD
12345 pts/1    00:00:00 bash

其中,PID表示进程的pid,CMD表示进程名。

二、根据pid查看进程启动时间

使用ps -p pid -o lstart命令来查看指定pid的进程启动时间。

$ ps -p 12345 -o lstart
           STARTED
Tue Oct 26 15:25:51 2021

其中,STARTED表示进程的启动时间。

三、根据pid查看进程命令

我们可以使用cat /proc/pid/cmdline命令来查看指定pid的进程完整命令。

$ cat /proc/12345/cmdline
bash

需要注意的是,这里得到的命令不一定是真正执行的命令,可能是由bash解释器执行的命令。

四、根据pid查看进程详情

我们可以使用ps -fp pid命令来查看指定pid的进程详细信息。

$ ps -fp 12345
UID        PID  PPID  C STIME TTY          TIME CMD
user     12345 12344  0 15:25 pts/1    00:00:00 bash

其中,UID表示进程的所有者,PPID表示进程的父进程pid,C表示进程使用的CPU百分比,STIME表示进程的启动时间,TTY表示进程的终端,TIME表示进程已经使用的CPU时间,CMD表示进程名。

五、查看pid的父进程

我们可以使用ps -p pid -o ppid命令来查看指定pid的父进程pid。

$ ps -p 12345 -o ppid
  PPID
12344

需要注意的是,进程的ppid不一定是直接父进程的pid,可能是由其他进程继承而来,因此需要进一步查看。

六、根据pid查看进程端口

我们可以使用netstat -anp | grep pid命令来查看指定pid使用的端口。

$ netstat -anp | grep 12345
tcp6       0      0 :::8000                 :::*                    LISTEN      12345/bash

其中,TCP/UDP表示传输协议,LOCAL_ADDRESS:PORT表示本地地址和端口,REMOTE_ADDRESS:PORT表示远程地址和端口,STATE表示连接状态,PID/Program_name表示进程的pid和程序名。

七、根据pid查看进程命令路径

我们可以使用which $(ps -p pid -o cmd=)命令来查看指定pid的进程命令路径。

$ which $(ps -p 12345 -o cmd=)
/bin/bash

其中,which命令可以在环境变量$PATH指定的路径中搜索命令,并返回命令的路径。

八、根据pid查看进程信息

我们可以使用cat /proc/pid/status命令来查看指定pid的进程详细信息。

$ cat /proc/12345/status
Name:   bash
Umask:  0002
State:  S (sleeping)
Tgid:   12345
Ngid:   0
Pid:    12345
PPid:   12344
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize: 256
Groups: 16 27 30 46 121 131 1000
NStgid: 12345
NSpid:  12345
NSpgid: 12345
NSsid:  2671
VmPeak:   336652 kB
VmSize:   336652 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:      1172 kB
VmRSS:       636 kB
RssAnon:          4136 kB
RssFile:         10576 kB
RssShmem:           0 kB
VmData:    114620 kB
VmStk:        132 kB
VmExe:         936 kB
VmLib:       25684 kB
VmPTE:        1148 kB
VmSwap:          0 kB

其中,Name表示进程的名字,State表示进程的状态,Tgid表示线程组ID(如果是多线程进程会有多个线程,不同线程的pid相同,但是tgid不同),Pid表示进程的pid,PPid表示进程的父进程pid,Uid表示进程所有者的UID,Groups表示所属组的GID,VmPeak表示虚存峰值,VmSize表示进程使用的虚拟内存空间大小,VmHWM表示进程使用的物理内存峰值。

九、根据pid查看进程内存占用

我们可以使用ps -p pid -o rss命令来查看指定pid的内存占用。

$ ps -p 12345 -o rss
  RSS
 6868

其中,RSS表示占用的物理内存大小,单位为KB。

十、Linux根据pid查看进程

除了以上介绍的命令,我们还可以使用其他命令来查看进程,比如tophtop等。这些工具可以动态展示当前系统的进程情况,提供更加丰富的信息,方便我们进行进程管理。