【一】进程概述
进程是正在运行的程序的实例,代表一个具有独立功能的程序及其数据集的一次执行。它是操作系统动态执行的基本单元,在传统操作系统中,进程既是资源分配的基本单位,也是执行的基本单位。
一个程序可以创建多个进程,进程是由内核定义的抽象实体,并为其分配执行所需的系统资源。从内核角度看,进程由用户内存空间和一系列内核数据结构组成。用户内存空间包含程序代码和所使用的变量,而内核数据结构则用于维护进程的状态信息。进程在内核数据结构中的记录包括各种标识号(IDS)、虚拟内存表、打开文件的描述符表、信号处理信息、资源使用及限制、当前工作目录等大量信息。进程的状态分为五种,如表所示:
状态 | 说明 |
运行态 | 进程占用处理器,正在运行 |
就绪态 | 进程具备运行条件,等待系统分配处理器 |
阻塞态 | 进程不具备运行条件,等待某事件完成后再运行 |
新建态 | 进程刚被创建,尚未进入就绪队列 |
终止态 | 进程完成任务或出现不可恢复错误而终止 |
【二】进程的类型
在Linux中,进程一般分为交互进程、批处理进程和监控进程三类,如表所示:
进程类型名称 | 说明 |
交互进程 | 与用户交互频繁,需要等待键盘和鼠标操作。接收输入后需快速响应,否则用户会感到系统迟钝。 |
批处理进程 | 不需与用户交互,常在后台运行,调度程序常对其怠慢。 |
监控进程 | 独立于控制终端,周期性执行任务或等待事件发生。大多数Linux服务器由守护进程实现,如ftp服务器。 |
交互进程是由Shell启动,可以在前台或后台运行。批处理进程与终端无关,是一组程序序列。监控进程又称守护进程,在后台运行,不受终端控制,用于执行特定系统任务。
【三】查看进程
在Linux系统下查看进程的常用命令有三个,各自功能不同,适用于不同场景。以下是详细介绍。
①ps 命令
ps命令是最常用的进程查看命令。通过执行ps命令可以查看当前运行的进程状态及资源占用情况,但ps命令显示的是瞬时状态,不是连续动态的。
ps命令选项参数值有6个,如表所示:
选项 | 说明 |
-a | 显示一个终端的所有进程,除了会话引线 |
-u | 显示当前用户进程及内存的使用情况 |
-x | 显示没有控制终端的进程 |
-l | 长格式显示详细信息 |
-e | 显示所有进程 |
-f | 格式显示,包括命令行 |
执行ps命令后,会显示进程列表,如图所示:
进程列表字段说明如表所示:
字段 | 说明 |
USER | 产生该进程的用户 |
PID | 进程ID |
%CPU | 进程占用CPU资源的百分比 |
%MEM | 进程占用物理内存的百分比 |
VSZ | 进程占用虚拟内存的大小(KB) |
RSS | 进程占用实际物理内存的大小(KB) |
TTY | 进程运行的终端 |
STAT | 进程状态 |
START | 进程的启动时间 |
TIME | 进程占用CPU的运算时间 |
COMMAND | 产生此进程的命令名 |
STAT——进程状态取值说明,如表所示:
字段 | 说明 |
D | 不可唤醒的睡眠状态,通常用于I/O操作 |
R | 正在运行 |
S | 可被唤醒的睡眠状态 |
T | 停止状态,可能是暂停或除错状态 |
W | 内存交换状态 |
X | 崩溃的进程 |
Z | 僵尸进程 |
< | 高优先级 |
N | 低优先级 |
L | 被锁定在内存中 |
s | 包含子进程 |
l | 多线程 |
+ | 位于后台 |
【例】列出所有在内存中运行的进程。
如果系统目前有许多正在运行的进程,可以用 more 命令逐步查看。在命令行模式下输入 "ps aux | more" 命令,具体操作如图所示:
②top 命令
top命令以动态方式查看进程状态,可通过按键不断刷新状态,独占前台直到终止。top命令提供实时CPU状态监控,可按CPU使用率、内存使用率、执行时间排序。
该语法中,top命令选项参数值有八个,如表所示:
选项 | 说明 |
-d | 改变显示的更新速度 |
-q | 无延迟显示速度 |
-c | 切换显示模式,显示执行档名称或完整路径 |
-S | 累积模式,累积已完成或消失的子进程CPU时间 |
-s | 安全模式,取消交互式指令 |
-i | 不显示任何闲置或无用的进程 |
-n | 更新次数,完成后退出top |
-b | 批次模式 |
【例】显示系统进程并每3秒更新一次信息。
在命令行模式中,通过输入 top 命令可以显示进程信息,并按照设定的秒数更新信息。通过设置“-d”参数可以实现这个功能,输入的完整命令为“top -d 3”,要退出 top 进程查看,可以按 Ctrl+C 键,具体操作如图所示:
③pstree 命令
pstree命令以树形结构显示程序和进程之间的关系,适用于查看进程树之间的关系。
该语法中,pstree命令选项参数值有五个,如表所示:
选项 | 说明 |
-a | 显示启动每个进程的完整指令,包括路径和参数 |
-c | 不使用精简法显示进程信息 |
-p | 显示进程的PID |
-u | 显示进程对应的用户名称 |
-n | 根据进程PID号排序输出,默认以程序名排序 |
【例】显示进程树并显示进程号。
在命令行模式中,输入“pstree -p”命令,其中“-p”参数用于显示进程的PID值。结果会以树状结构展示,可以清晰地看到进程之间的父子关系。具体操作如图所示:
【四】定时调度任务进程
crond是Linux下的守护进程,用于周期性地执行任务或等待事件,类似Windows的计划任务。操作系统安装后默认安装并自动启动crond进程。crond每分钟检查是否有任务执行,如果有则自动执行。
crontab是Linux系统的定时执行工具,可以在无人干预下运行作业,通过crond进程提供服务,crond每分钟检查任务执行情况。
crontab配置文件所在位置如表所示:
路径 | 说明 |
/var/spool/cron/ | 存放用户的crontab任务,每个任务以登录名命名 |
/etc/crontab | 存放系统管理员创建并维护的crontab任务 |
/etc/cron.d/ | 存放任何要执行的crontab任务 |
crontab配置文件如图所示:
crontab时间参数说明如表所示:
时间 | 说明 |
minute | 一小时中的第几分钟(0~59) |
hour | 一天中的第几小时(0~23) |
上一篇: ChatGPT是什么? 下一篇: LINUX虚拟文件系统 免费试用30+款云服务产品 即刻开始您的上云之旅
免费试用
|