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