在Linux系统中,可以使用多种命令来查看进程的详细信息,以下是一些常用的命令及方法:
ps 命令
- 基本语法:
ps [options]
- 常用参数:
- -e:显示所有进程。
- -f:显示完整格式的进程信息,包括UID、PID、PPID、C、STIME、TTY、TIME、CMD等字段。
- -l:以长格式显示进程信息,包含更多详细信息,如F、S、UID、PID、PPID、C、PRI、NI、ADDR、SZ、WCHAN、TTY、TIME、CMD等。
- -u:指定用户名,显示该用户拥有的进程信息。
- -p:指定进程ID,显示特定进程的信息。
- 使用示例:
ps -ef
:查看系统中所有进程的详细信息,例如:UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:00? 00:00:02 /sbin/init root 2 0 0 10:00? 00:00:00 [kthreadd] root 3 2 0 10:00? 00:00:00 [rcu_gp] root 4 2 0 10:00? 00:00:00 [rcu_par_gp] ...
ps -l
:以长格式查看当前终端的进程信息,例如:F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 2262 2250 0 80 0 - 3747 wait pts/0 00:00:00 bash 0 R 1000 2345 2262 0 80 0 - 4289 - pts/0 00:00:00 ps
ps -u username
:查看指定用户的进程信息,例如ps -u root
将显示root用户拥有的所有进程。
top 命令
- 基本原理:实时动态地查看系统中各个进程的资源占用情况,包括CPU使用率、内存占用、进程状态等信息。
- 使用示例:在终端输入
top
,进入界面后,可以看到类似如下的信息:top - 15:30:00 up 1 day, 2:15, 2 users, load average: 0.00, 0.01, 0.05 Tasks: 140 total, 1 running, 139 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 7786.4 total, 1278.6 free, 3288.2 used, 3219.6 buff/cache MiB Swap: 2048.0 total, 1942.0 free, 106.0 used. 2843.7 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1234 root 20 0 123456 56789 12345 S 0.0 0.7 0:05.67 firefox 2345 daemon 20 0 234567 34567 45678 S 0.0 0.4 0:03.21 httpd 3456 nobody 20 0 345678 45678 56789 S 0.0 0.6 0:04.56 mysqld
- 结果解读:
- 第一行:显示系统当前时间、系统运行时间、当前登录用户数以及系统负载平均值。
- 第二行:显示系统中的进程总数、正在运行的进程数、睡眠的进程数、停止的进程数和僵尸进程数。
- 第三行:显示CPU的使用情况,包括用户空间使用率、内核空间使用率、调整优先级的进程占用率、空闲率、等待I/O的进程占用率、硬件中断占用率、软件中断占用率以及被虚拟化环境偷走的CPU时间占比。
- 第四行和第五行:分别显示内存和交换空间的使用情况,包括总量、已使用量、空闲量等。
- 后续行:显示各个进程的详细信息,包括进程ID、所属用户、优先级、虚拟内存大小、物理内存大小、共享内存大小、进程状态、CPU使用率、内存使用率、运行时间以及命令名称等。
htop 命令
- 基本原理:基于
top
的交互式进程查看工具,提供了更直观、更丰富的界面和功能,方便查看进程的各种信息。 - 使用示例:在终端输入
htop
,会显示一个彩色的交互式界面,其中包含了各个进程的详细信息以及系统资源的总体使用情况,如下所示:PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1234 root 20 0 123456 56789 12345 S 0.0 0.7 0:05.67 firefox 2345 daemon 20 0 234567 34567 45678 S 0.0 0.4 0:03.21 httpd 3456 nobody 20 0 345678 45678 56789 S 0.0 0.6 0:04.56 mysqld
- 结果解读:与
top
命令类似,VIRT
表示虚拟内存大小,RES
表示物理内存大小,SHR
表示共享内存大小,MEM%
表示该进程占用物理内存占总内存的百分比,CPU%
表示CPU使用率,通过界面中的进度条和颜色等直观元素,可以更快速地了解各个进程的资源占用情况以及它们之间的相对大小关系。此外,htop
还支持鼠标操作,方便用户对进程进行排序、筛选、终止等操作。
pmap 命令
- 基本语法:
pmap [options] pid
- 常用参数:
- -x:以扩展格式显示进程的内存映射信息,包括地址范围、内存大小、权限、映射文件等详细信息。
- -d:显示进程的内存段信息,包括起始地址、结束地址、大小、权限等。
- 使用示例:假设要查看进程ID为1234的进程内存映射情况,使用
pmap -x 1234
命令,会得到类似如下的输出:1234: firefox Address Kbytes RSS Dirty Mode Mapping 000055555576c000 4 4 0 r---- firefox 000055555576d000 4 4 4 rw--- firefox 000055555576e000 4 4 4 rw--- firefox 000055555576f000 4 4 0 r---- firefox 0000555555770000 4 4 4 rw--- firefox 0000555555771000 4 4 4 rw--- firefox 0000555555772000 4 4 0 r---- firefox 0000555555773000 4 4 4 rw--- firefox 0000555555774000 4 4 4 rw--- firefox 00007f2f6c000000 1024 560 128 rw--- [ anon ] 00007f2f6c100000 1024 200 0 rw--- [ anon ] 00007f2f6c200000 1024 100 0 rw--- [ anon ] 00007f2f6c300000 1024 240 0 rw--- [ anon ] 00007f2f6c400000 1024 320 0 rw--- [ anon ] 00007f2f6c500000 1024 400 0 rw--- [ anon ] 00007f2f6c600000 1024 500 0 rw--- [ anon ] 00007f2f6c700000 1024 600 0 rw--- [ anon ] 00007f2f6c800000 1024 700 0 rw--- [ anon ] 00007f2f6c900000 1024 800 0 rw--- [ anon ] 00007f2f6ca00000 1024 900 0 rw--- [ anon ] 00007f2f6cb00000 1024 960 0 rw--- [ anon ] 00007f2f6cc00000 1024 980 0 rw--- [ anon ] 00007f2f6cd00000 1024 990 0 rw--- [ anon ] 00007f2f6ce00000 1024 995 0 rw--- [ anon ] 00007f2f6cf00000 1024 998 0 rw--- [ anon ] 00007f2f6d000000 1024 999 0 rw--- [ anon ] 00007f2f6d100000 1024 999 0 rw--- [ anon ] 00007f2f6d200000 1024 999 0 rw--- [ anon ] 00007f2f6d300000 1024 999 0 rw--- [ anon ] 00007f2f6d400000 1024 999 0 rw--- [ anon ] 00007f2f6d500000 1024 999 0 rw--- [ anon ] 00007f2f6d600000 1024 999 0 rw--- [ anon ] 00007f2f6d700000 1024 999 0 rw--- [ anon ] 00007f2f6d800000 1024 999 0 rw--- [ anon ] 00007f2f6d900000 1024 999 0 rw--- [ anon ] 00007f2f6da00000 1024 999 0 rw--- [ anon ] 00007f2f6db00000 1024 999 0 rw--- [ anon ] 00007f2f6dc00000 1024 999 0 rw--- [ anon ] 00007f2f6dd00000 1024 999 0 rw--- [ anon ] 00007f2f6de00000 1024 999 0 rw--- [ anon ] 00007f2f6df00000 1024 999 0 rw--- [ anon ] 00007fff2c000000 132 132 132 rw--- [ stack ] 00007fff2c021000 8 8 0 r---- [ anon ] 00007fff2c023000 4 4 4 rw--- [ anon ] 00007fff2c024000 20 20 20 rw--- [ anon ] 00007fff2c029000 8 8 8 rw--- [ anon ] ffffffffff600000 4 0 0 r-x-- [ anon ] total 56789
- 结果解读:
Address
列表示内存映射的起始地址,Kbytes
列表示每个内存区域的大小,RSS
列表示该区域在物理内存中的实际占用大小,Dirty
列表示该区域中被修改但尚未写回磁盘的数据量,Mode
列表示内存区域的权限,如r
表示只读,w
表示可写,x
表示可执行,Mapping
列表示内存映射对应的文件或匿名内存区域。通过对各个区域的RSS
值求和,可以得到进程实际占用的物理内存总量。这种方式能够更详细地了解进程内存的具体分布情况。
/proc 目录
- 基本原理:
/proc
是一个虚拟文件系统,它提供了一种内核数据结构的接口,通过查看其中的文件和目录,可以获取系统和进程的各种信息。 - 使用示例:对于每个进程,在
/proc
目录下都有一个以其进程ID命名的子目录,例如/proc/1234
。进入该目录后,可以查看以下文件来获取进程的详细信息:- cmdline:包含启动该进程的完整命令行参数。
- environ:包含进程的环境变量。
- exe:指向该进程的可执行文件的符号链接。
- fd:包含进程打开的文件描述符的目录。
- maps:显示进程的内存映射信息,类似于
pmap
命令的输出,但格式略有不同。 - status:包含进程的状态信息,如进程ID、父进程ID、进程组ID、虚拟内存大小、物理内存大小、状态等。
lsof 命令
- 基本语法:
lsof [options]
- 常用参数:
- -p:指定进程ID,显示该进程打开的文件和网络连接等信息。
- -u:指定用户名,显示该用户拥有的进程打开的文件和网络连接等信息。
- -i:显示网络连接相关的信息,可以指定特定的网络协议和端口号进行筛选。
- 使用示例:
lsof -p 1234
:查看进程ID为1234的进程打开的文件和网络连接等信息,例如:
```
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
firefox 1234 root cwd DIR 8,1 4096 10485760 /home/user
firefox 1234 root r