概念
在 Linux 系统中,进程是正在运行的程序的实例。理解进程的管理、查看和控制对于系统管理员和开发者来说非常重要
进程的定义:
• 进程(Process)是程序在执行时的一个实例。它包含了程序的代码、数据、堆栈、环境变量等。
• 每个进程都有一个唯一的 进程 ID(PID),用于标识进程。
• 进程可以处于不同的状态,如运行态、就绪态、等待态、僵尸态等。
进程监控指令之ps
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的.
语法
| | | | --- | --- | | | ps [选项] |
常用选项说明
• -a:显示所有用户的进程(不包括会话领导者和没有控制终端的进程)。
• -u:显示进程的用户信息。
• -x:显示没有控制终端的进程。
• -e:显示所有进程。
• -f:显示长格式信息,包括父进程 ID、控制终端等。
• -l:显示长格式信息,类似于 -f,但更详细。
• -o:自定义输出格式,指定要显示的字段。
• -p:指定要显示的进程 ID。
• -t:指定要显示的终端。
• -U:指定要显示的用户。
• -G:指定要显示的用户组。
常用搭配
| | | | --- | --- | | | ps -ef | | | ps -aux | | | ps -le |
ps -aux解析
| | | | --- | --- | | | root@master-01:~# ps -aux | head -10 | | | USER PID %CPU%MEM VSZ RSS TTY STAT START TIME COMMAND | | | root 10.40.017085611472 ? Ss Feb17 350:48 /sbin/init nopti | | | root 20.00.0 0 0 ? S Feb17 0:13 [kthreadd] | | | root 30.00.0 0 0 ? I< Feb17 0:00 [rcu_gp] | | | root 40.00.0 0 0 ? I< Feb17 0:00 [rcu_par_gp] | | | root 60.00.0 0 0 ? I< Feb17 0:00 [kworker/0:0H-kblockd] | | | root 80.00.0 0 0 ? I< Feb17 0:00 [mm_percpu_wq] | | | root 90.00.0 0 0 ? S Feb17 2:29 [ksoftirqd/0] | | | root 100.00.0 0 0 ? I Feb17 53:47 [rcu_sched] | | | root 110.00.0 0 0 ? S Feb17 0:08 [migration/0] | | | | | | #解析 | | | USER:表示用户 | | | PID:表示进程号 | | | %CPU:表示cpu占用率 | | | %MEM:表示内存占用率 | | | VSZ:进程占用的虚拟内存,单位kb | | | RSS:进程占用的常驻内存,单位kb | | | TTY:?表示进程没有控制终端 | | | STAT:进程状态 | | | START:进程启动时间 | | | TIME:进程累计运行了多长时间 | | | COMMAND:进程运行的命令 |
进程状态
常用进程基础状态
• 运行态(Running):状态字符R。进程正在CPU上运行,或者在运行队列中等待运行
• 睡眠态(Sleeping):状态字符S。进程正在等待某些事件(如 I/O 操作、信号等)完成。进程处于睡眠态时,不会占用 CPU 时间。
• 不可中断睡眠态(Disk Sleep):状态字符D。进程正在等待某些不可中断的 I/O 操作完成,通常与磁盘 I/O 操作有关。处于这种状态的进程不能被信号唤醒,也不能被 kill 命令终止。
• 停止态(Stopped):状态字符T。进程被信号停止,通常是因为收到了 SIGSTOP 或 SIGTSTP 信号。停止的进程不会占用 CPU 时间,但可以被信号唤醒。
• 僵尸进程(Zombie):状态字符Z。进程已经完成,但其父进程尚未读取其状态信息。僵尸进程不能被终止,只能等待父进程读取状态信息后自动消失。僵尸进程会占用系统资源,直到父进程读取其状态信息。
• 死态(Dead):状态字符X。进程已经死亡,但尚未被父进程回收。这种状态的进程通常不会出现在 ps 的输出中。
常用组合进程状态
• R+、S+、D+:带+号的进程,表示进程前台运行
• Ss、xxxs:带小s的进程,进程是父进程
• R<、S<:带小于号<的进程,进程是高优先级进程,优先被cpu调度
• RN、SN:带N的进程,进程是低优先级进程
• Sl:带l的线程,进程是多线程状态
僵尸状态的进程
这里着重讲一下僵尸状态的进程,僵尸状态的进程因为一些原因脱离系统控制,但是进程又没有正常退出(结束),进程运行中但是不受控制,占用系统的cpu、内存资源。
僵尸状态排查及结束流程
1. 使用ps命令查找僵尸进程
| | | | --- | --- | | | ps -ef | grep 'Z' | | | # 或者使用更详细的命令来定位僵尸进程及其父进程,在输出中,STAT 列为 Z 的进程即为僵尸进程 | | | ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' |
2. 定位僵尸进程的父进程
| | | | --- | --- | | | # 下面命令输出的是僵尸进程的父进程PID | | | ps -o ppid= -p <僵尸进程PID> |
3. 终止父进程
| | | | --- | --- | | | # 父进程终止后,僵尸进程会被 init 进程(PID 1)接管并自动清理 | | | kill -9 父进程pid |
孤儿进程
对系统影响不大。
某个子进程的父进程因为特殊原因挂了,但是子进程还在,子进程就是孤儿进程。
进程监控指令之top、htop、iotop
top
top命令可以动态的持续监听进程的运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化的定制自己的输出,进而更清楚的了解进程的运行状态
语法
| | | | --- | --- | | | top [选项] |
常用选项说明
• -d:指定top命令每隔几秒更新,默认是3秒
• -b:使用批处理模式,一般和-n选项结合使用,用于把top命令重定向到文件中
• -p:仅查看指定ID的进程
• -u:只监听某个用户的进程
示例:
| | | |---|---| | |root@master-01:~#top| | |top-1755up60days,6:30,1user,load average:2.55,1.74,1.88| | |Tasks:473total, 1running,472sleeping, 0stopped, 0zombie| | |%Cpu(s):0.2us,0.4sy,0.0ni,99.4id,0.0wa,0.0hi,0.0si,0.0st| | |MiB Mem :64050.7total,29284.5free, 6963.5 used,27802.7buff/cache| | |MiB Swap: 0.0total, 0.0free, 0.0used.55773.2availMem| | | | | |PIDUSER PRNI VIRT RES SHRS%CPU%MEM TIME+COMMAND| | |1280024root 20 0 9440 4136 3056 R 6.2 0.0 0:00.01top| | |1root 20 017085611472 6800 S 0.0 0.0350:51.46systemd| | |2root 20 0 0 0 0S 0.0 0.0 0:13.76kthreadd| | |3root 0-20 0 0 0I 0.0 0.0 0:00.00rcu_gp| | |4root 0-20 0 0 0I 0.0 0.0 0:00.01rcu_par_gp| | |6root 0-20 0 0 0I 0.0 0.0 0:00.00kworker/0:0H-kblockd| | |8root 0-20 0 0 0I 0.0 0.0 0:00.00mm_percpu_wq| | |9root 20 0 0 0 0S 0.0 0.0 2:29.50ksoftirqd/0| | |10root 20 0 0 0 0I 0.0 0.053:48.12rcu_sched |说明图:

htop
htop 是一个交互式的进程查看器,类似于 top,但提供了更丰富的功能和更友好的用户界面。它支持颜色显示、树状结构、进程排序等功能,还可以直接在界面中操作进程(如杀死进程)。
安装
| | | | --- | --- | | | 在大多数 Linux 发行版中,htop 可以通过包管理器安装: | | | bash | | | 复制 | | | # Ubuntu/Debian | | | sudo apt-get install htop | | | | | | # CentOS/RHEL | | | sudo yum install htop | | | | | | # Fedora | | | sudo dnf install htop |运行htop后,你会看到类似以下的界面:

常用快捷键
• F1:帮助
• F2:设置
• F3:搜索进程
• F4:过滤进程
• F5:树状视图
• F6:排序字段
• F9:杀死进程
• F10:退出
iotop
iotop是一个用于监控磁盘 I/O 活动的工具,可以帮助你了解哪些进程正在占用磁盘 I/O 资源。它提供了实时的 I/O 使用情况,包括读写速度、进程信息等。
安装
| | | | --- | --- | | | # Ubuntu/Debian | | | sudo apt-get install iotop | | | | | | # CentOS/RHEL | | | sudo yum install iotop | | | | | | # Fedora | | | sudo dnf install iotop |运行iotop后,你会看到类似以下的界面:

链接:https://www.cnblogs.com/huangSir-devops/p/18834292
全部0条评论
快来发表一下你的评论吧 !