如何在 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]
      ...
      
      AI 代码解读
    • 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
      
      AI 代码解读
    • 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
    
    AI 代码解读
  • 结果解读
    • 第一行:显示系统当前时间、系统运行时间、当前登录用户数以及系统负载平均值。
    • 第二行:显示系统中的进程总数、正在运行的进程数、睡眠的进程数、停止的进程数和僵尸进程数。
    • 第三行:显示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
    
    AI 代码解读
  • 结果解读:与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
    
    AI 代码解读
  • 结果解读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
目录
打赏
0
2
2
0
143
分享
相关文章
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
72 27
|
12天前
|
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
65 10
|
2月前
|
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
108 24
Linux系统之whereis命令的基本使用
【Linux】进程概念和进程状态
本文详细介绍了Linux系统中进程的核心概念与管理机制。从进程的定义出发,阐述了其作为操作系统资源管理的基本单位的重要性,并深入解析了task_struct结构体的内容及其在进程管理中的作用。同时,文章讲解了进程的基本操作(如获取PID、查看进程信息等)、父进程与子进程的关系(重点分析fork函数)、以及进程的三种主要状态(运行、阻塞、挂起)。此外,还探讨了Linux特有的进程状态表示和孤儿进程的处理方式。通过学习这些内容,读者可以更好地理解Linux进程的运行原理并优化系统性能。
35 4
基于进程热点分析与系统资源优化的智能运维实践
智能服务器管理平台提供直观的可视化界面,助力高效操作系统管理。核心功能包括运维监控、智能助手和扩展插件管理,支持系统健康监控、故障诊断等,确保集群稳定运行。首次使用需激活服务并安装管控组件。平台还提供进程热点追踪、性能观测与优化建议,帮助开发人员快速识别和解决性能瓶颈。定期分析和多维度监控可提前预警潜在问题,保障系统长期稳定运行。
70 17
|
24天前
|
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
75 8
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
94 34
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
1月前
|
Linux:守护进程(进程组、会话和守护进程)
守护进程在 Linux 系统中扮演着重要角色,通过后台执行关键任务和服务,确保系统的稳定运行。理解进程组和会话的概念,是正确创建和管理守护进程的基础。使用现代的 `systemd` 或传统的 `init.d` 方法,可以有效地管理守护进程,提升系统的可靠性和可维护性。希望本文能帮助读者深入理解并掌握 Linux 守护进程的相关知识。
45 7
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等