Linux下如何查看当前系统中正在运行的所有程序及其详细信息?

在Linux系统中,查看运行的程序(进程)是系统管理和故障排查的基础操作,Linux提供了多种命令工具,通过不同的参数组合可以实现多样化的进程查看需求,满足从基础查询到深度分析的各种场景,以下将详细介绍常用命令的功能、使用方法及适用场景。

linux如何查看运行的程序

基础进程查看命令

ps命令:静态查看进程快照

ps(Process Status)是最基础的进程查看工具,用于输出当前时刻的进程静态信息,通过不同选项可查看指定范围的进程:

  • ps aux:查看系统中所有进程的详细信息,包括用户(USER)、进程ID(PID)、CPU占用率(%CPU)、内存占用率(%MEM)、命令(COMMAND)等字段。
    示例输出:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.2  12800  8324 ?        Ss   May01   0:01 /sbin/init
    mysql      1234  0.1  1.5 123456 78900 ?        Sl   May02   0:30 /usr/sbin/mysqld
  • ps -ef:以System V格式输出所有进程,包含进程的父进程ID(PPID),适合通过管道过滤特定进程(如ps -ef | grep nginx)。

top命令:动态实时监控进程

top以全屏交互界面实时更新进程信息,默认按CPU占用率降序排列,适合监控系统资源占用情况,常用交互操作:

  • M:按内存占用率(%MEM)排序;
  • C:按CPU占用率(%CPU)排序;
  • k:终止指定PID的进程;
  • q:退出top界面。
    界面顶部显示系统整体状态(如CPU负载、内存使用量),下方为进程列表,实时刷新(默认3秒/次)。

htop命令:增强版进程监控工具

htoptop的升级版,提供更直观的彩色界面、树状进程视图(F5切换)和鼠标操作支持,适合新手使用,安装后直接运行htop,可快速定位高资源占用进程,并通过快捷键(如t查看线程,s跟踪系统调用)深入分析。

进阶进程查询工具

pgrep/pkill命令:按名称查找/终止进程

pgrep通过进程名、用户等信息查找进程PID,适合脚本自动化操作:

linux如何查看运行的程序

  • pgrep -f "nginx":查找命令行中包含“nginx”的进程PID;
  • pgrep -u root:查找root用户的所有进程。
    pkill与之类似,用于直接终止进程(如pkill -f nginx)。

pstree命令:查看进程树结构

pstree以树状图展示进程间的父子关系,便于理解进程依赖,例如pstree -p会显示每个进程的PID,pstree -u会显示进程所属用户。

systemctl命令:查看系统服务状态

对于systemd管理的系统,systemctl可查看运行的服务(即守护进程):

  • systemctl list-units --type=service --state=running:列出所有正在运行的服务;
  • systemctl status nginx:查看nginx服务的详细状态(包括进程PID、日志等)。

ss/netstat命令:查看网络关联进程

通过网络连接反查进程,适合排查端口占用问题:

  • ss -tulnp:显示所有监听(l)的TCP(t)/UDP(u)端口及对应进程(p);
  • netstat -anp | grep :80:查看80端口的连接及进程信息netstat逐渐被ss替代,后者性能更优)。

核心命令对比与适用场景

命令 核心功能 常用选项 适用场景
ps 静态查看进程快照 aux, -ef, –forest(树状) 快速查询指定进程信息
top 动态实时监控 M, C, k, d(刷新间隔) 实时监控系统资源占用
htop 增强版实时监控 F5(树状), t(线程), s(跟踪) 新手友好,深度分析进程
pgrep 按名称/用户查找进程PID -f(匹配完整命令), -u(用户) 脚本自动化,批量操作
pstree 查看进程树结构 -p(显示PID), -u(显示用户) 分析进程依赖关系
systemctl 查看systemd服务状态 status, list-units 管理系统服务(如nginx、mysql)
ss 查看网络连接及关联进程 tulnp, a(所有连接) 排查端口占用、网络连接问题

注意事项

  1. 权限问题:普通用户只能查看自己的进程,需sudo才能查看系统所有进程(如ps aux | grep root)。
  2. 动态与静态top/htop实时刷新,适合监控;ps只显示当前快照,适合一次性查询。
  3. 服务与进程:系统服务(如nginx)通过systemctl管理,实际进程可通过systemctl status查看PID。

相关问答FAQs

Q1:ps auxps -ef有什么区别?如何选择?
A:ps aux采用BSD格式,包含%CPU%MEM等资源占用率字段,适合直观查看进程资源消耗;ps -ef采用System V格式,包含PPID(父进程ID)字段,适合通过管道过滤(如ps -ef | grep java),若需关注资源占用,选ps aux;若需分析进程父子关系,选ps -ef

linux如何查看运行的程序

Q2:为什么用ps aux查看不到某些进程?
A:可能原因有两个:一是权限不足,普通用户无法查看其他用户的进程(需sudo);二是进程状态为“僵尸”(Z状态),这类进程已结束但未释放资源,ps aux可能不显示或显示异常,可通过top查看并手动终止其父进程(k命令)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/24521.html

(0)
酷番叔酷番叔
上一篇 2025年9月17日 05:49
下一篇 2025年9月17日 06:04

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信