linux下查看进程的几种常用方法

本文介绍在Ubuntu系统中如何查看和管理进程,包括使用ps、top等命令查看进程状态,使用kill命令终止进程,以及使用htop和atop进行更高级的进程监控。此外,还介绍了如何调试一个正在运行的进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个应用程序的运行就是一个进程,就好似Windows里的taskmgr一样!那么在ubantu下怎么查看进程呢?方法如下:

一、查看进程

(1)ps:(Process Status)的缩写。取得是执行命令时抓取的当前进程状态,不动态变化,当前的进程;ps命令是相当强大的进程查看命令。用该命令可以确定有哪些进程正在运行和运行地状态、进程是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地.
(2)pstree//按树型来查看进程 -c显示PID。树的根节点为pid或init。如果指定了用户名,进程树将以用户所拥有的进程作为根节点。例如循环的fork函数,我们可以通过pstree来查看树的进程;
(3)pgrep firefox//按进程名称查看进程ID
(4)ps -ef|grep defunc ps和grep常用组合可以查找特定的进程。此时可以找出僵尸进程,
(5)top  //top是动态的随着时间的变化而变化,有点类似与windows里的任务管理器,实时显示;按q退出,按h进入帮助;
(6)ps -u root  任务:查看指定用户root运行的进程
(7)把所有进程显示出来,并输出到ps001.txt文件 
         命令:ps -aux > ps001.txt

参数设置:
 ps -aux,显示所有正在内存当中的程序状态;然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作
 ps -ef是以全格式显示当前所有的进程
 -x 显示所有程序,不以终端机来区分。
 -e 显示所有进程。
 -f 全格式。
 -a 显示终端上的所有进程,包括其他用户的进程。
 -r 只显示正在运行的进程。
 -u  以用户为主的格式来显示程序状况。
二、 kill 命令用于终止进程
    (1)例如: kill -9 [PID]
    -9表示强迫进程立即停止
   通常用ps 查看进程PID ,用kill命令终止进程
    (2)Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号;
     例如:# killall -9 NAME
三、向htop和atop说hello
     htop是一个类似top的交互式进程查看工具,但是可以垂直和水平滚动来查看所有进程和他们的命令行。进程的相关操作(killing,renicing)不需要输入PID。要安装htop输入命令:
apt-get install htop;
# htop
    atop是一个用来查看Linux系统负载的交互式监控工具。它能展现系统层级的关键硬件资源(从性能角度)的使用情况,如CPU、内存、硬盘和网络。
# atop
四、如何调试一个正在运行的进程
gcc -g mallo.c
  >./a.out
  >ps -u 指定用户的所有进程;
  >gdb
>attach 4532  //绑定该进程,进行动态调试;
>p i 打印i;
>set var i=1
>n  //下一步;
>finish  //结束


### Linux 常见的进程状态及其含义 在 Linux 系统中,进程的状态可以通过 `top` 或者 `ps` 命令查看。以下是常见的进程状态以及它们的具体含义: #### 1. 运行状态 (Running, R) 当一个进程正在运行或者等待 CPU 时间片以便执行时,它处于 **运行状态**。这种状态下分为两种情况:实际运行中的进程和准备运行但尚未获得 CPU 的进程[^4]。 #### 2. 可中断睡眠状态 (Sleeping, S) 如果一个进程暂时无法继续执行而进入休眠模式,则其状态标记为 **可中断睡眠状态**。在这种情况下,进程正等待某些事件的发生(例如 I/O 操作完成)。一旦条件满足,进程会被唤醒并恢复到运行状态。 #### 3. 不可中断睡眠状态 (Disk Sleep, D) 此状态表示进程正处于深度睡眠之中,并且不能被信号打断。通常是因为该进程正在进行重要的硬件操作(比如磁盘读写),直到设备响应为止才会返回正常流程。 #### 4. 停止状态 (Stopped, T/t) 当某个进程接收到 SIGSTOP、SIGTSTP 等暂停信号后就会转变为 **停止状态**。此时不会消耗任何 CPU 资源,除非再次受到启动指令才能重新激活成为活动实体;另外还有一种特殊情况即调试过程中设置断点所引发的 t 标记形式。 ```bash kill -SIGSTOP <pid> # 发送停止信号给指定 PID 的进程 ``` #### 5. 死亡状态 (Dead, X) 这是短暂过渡阶段,在内核清理完毕之后很快消失不见。一般无需特别关注此类状况下的实例存在与否即可。 #### 6. 僵死状态 (Zombie, Z) 所谓僵尸进程是指那些已经结束了自己的生命周期但却未完全释放资源的对象——尽管它们实际上不再占用计算能力却仍然保留着唯一的标识符(PID),直至父程序调用 wait() 函数回收相关信息为止之前一直保持这样的形态存在于系统当中。 #### 7. 孤儿进程 (Orphan Process) 孤儿进程是指它的父进程先于自己终止的情况下的子代单元,默认由 init 进程接管负责后续处理工作以防丢失必要的管理权限[^2]。 #### 8. 特殊标志组合解释 除了上述基础分类之外还有一些复合型标签用于提供更多细节描述: - **Ss+**: 表明这是一个前台进程中属于会话领导者角色的同时也具备较高优先级属性。 - **D+**: 类似常规不可中断态只是额外标注出了当前对象位于前台分组内部位置而已。 - **S<**: 显示出此刻目标拥有高于平均水平调度权值设定情形下呈现出来的外观特征表现出来样子模样如何等等诸如此类现象发生时候应该怎样应对办法措施有哪些可供选择考虑采用实施应用实践探索研究学习交流分享讨论共同进步成长发展成就辉煌未来梦想成真愿望达成目的实现目标圆满成功胜利告捷喜讯传来佳音频传好消息不断涌现层出不穷层出不 ### 示例代码展示 下面提供一段简单的 Python 脚本用来模拟创建新进程并通过 ps 查看其状态变化过程: ```python import os import time def child_process(): print(f"Child process started with pid {os.getpid()}") while True: pass # Simulate a busy loop to keep the process running. if __name__ == "__main__": pid = os.fork() if pid == 0: # Child process logic. child_process() else: print(f"Forked new process with pid {pid}.") try: input("Press Enter key after checking 'ps' command output...") finally: os.wait() # Wait for child termination before exiting parent. print("Parent process ended.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值