如何在 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月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
133 3
Linux系统禁用swap
|
1月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
178 3
|
10天前
|
监控
ps 进程中的字段信息
该表介绍了进程管理中的关键字段,包括进程ID、用户、CPU与内存使用情况、运行时间、状态及优先级等信息,用于监控和分析系统中各进程的资源占用与运行状态。
48 10
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
151 0
Linux系统初始化脚本
|
2月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
151 18
|
1月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
147 1
|
1月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
610 1
|
2月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
955 10
|
2月前
|
安全 Linux 数据安全/隐私保护
为Linux系统的普通账户授予sudo访问权限的过程
完成上述步骤后,你提升的用户就能够使用 `sudo`命令来执行管理员级别的操作,而无需切换到root用户。这是一种更加安全和便捷的权限管理方式,因为它能够留下完整的权限使用记录,并以最小权限的方式工作。需要注意的是,随意授予sudo权限可能会使系统暴露在风险之中,尤其是在用户不了解其所执行命令可能带来的后果的情况下。所以在配置sudo权限时,必须谨慎行事。
393 0
|
2月前
|
Ubuntu Linux 开发者
国产 Linux 发行版再添新成员,CutefishOS 系统简单体验
当然,系统生态构建过程并不简单,不过为了帮助国产操作系统优化生态圈,部分企业也开始用国产操作系统替代 Windows,我们相信肯定会有越来越多的精品软件登录 Linux 平台。
147 0

热门文章

最新文章