如何在 Linux 系统中查看进程的详细信息?

简介: 如何在 Linux 系统中查看进程的详细信息?

在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
目录
相关文章
|
1月前
|
Linux C++
Linux c/c++之进程的创建
这篇文章介绍了在Linux环境下使用C/C++创建进程的三种方式:system函数、fork函数以及exec族函数,并展示了它们的代码示例和运行结果。
31 0
Linux c/c++之进程的创建
|
2月前
|
Linux Shell
6-9|linux查询现在运行的进程
6-9|linux查询现在运行的进程
|
3月前
|
Linux
在Linux中,如何查看系统上运行的进程?
在Linux中,如何查看系统上运行的进程?
|
3月前
|
运维 监控 Linux
在Linux中,如何查看所有正在运行的进程?
在Linux中,如何查看所有正在运行的进程?
|
3月前
|
Linux
在Linux中,如何查看和结束正在运行的进程?
在Linux中,如何查看和结束正在运行的进程?
|
3月前
|
Linux
在Linux中,如何查看某进程所打开的所有文件?
在Linux中,如何查看某进程所打开的所有文件?
|
3月前
|
Linux
在Linux中,如何查看系统当前运行的进程以及它们的状态?
在Linux中,如何查看系统当前运行的进程以及它们的状态?
|
6月前
|
监控 Linux
linux监控指定进程
请注意,以上步骤提供了一种基本的方式来监控指定进程。根据你的需求,你可以选择使用不同的工具和参数来获取更详细的进程信息。
62 0
|
监控 Linux 调度
深入了解 Linux 中的线程信息获取
在 Linux 操作系统中,线程是多任务编程的关键组成部分。为了有效地管理和监控线程,开发者需要了解如何获取线程的相关信息。本文将详细介绍在 Linux 系统中获取线程信息的方法,包括线程 ID、线程状态、线程优先级等。我们将探讨系统调用和库函数,以及如何在编程中使用它们。
407 0
|
Web App开发 监控 安全
Linux如何正确查看正在运行的进程相关信息
Linux如何正确查看正在运行的进程相关信息
179 0
Linux如何正确查看正在运行的进程相关信息