概述
在服务器资源紧张的环境中,如果后台任务或繁重的批处理脚本正在运行,核心服务的响应速度可能会变慢。本文将介绍如何使用 nice 和 renice 命令设置 CPU 调度优先级,并保持系统稳定性的实用技巧。
1. 查看进程优先级 (NI/PR) 及搭建 htop 监控环境
为了进行进程优先级监控实战,我们首先安装必备工具 htop 和 procps 软件包。

ps 命令用于查看当前系统中正在运行的进程的详细信息和优先级数值。
在输出结果中,NI 是用户可以调节的 nice 值,而 PRI 表示内核调度器实际赋予的优先级。
⚙️ [主要选项]
-e : 选择并显示系统中运行的所有进程。-o : 自定义设置要输出的列项目(pid、ni、pri、comm 等)。-u : 仅过滤并输出特定用户所拥有的进程。-p : 仅查询指定的特定 PID(进程 ID)对应的进程。-f : 输出包含进程全部详细信息的完整格式列表。

2. 使用 nice 命令以低优先级运行后台任务
为了安全地创建和管理实战所需的测试文件,我们创建一个临时工作目录并切换至该位置。

使用 nice 命令将 nice 值指定为 10,在降低优先级以让出 CPU 资源占用率的状态下,将大文件生成任务放到后台(&)执行。

结合使用 ps 命令和 grep,检查正在运行的 dd 进程的 PID 以及实际生效的 nice 值(NI)是否已按预期设置。

3. 使用 renice 命令实时更改正在运行的进程优先级
为了进行实时修改优先级的实战演练,我们在后台(&)运行一个等待 300 秒的 sleep 进程。

利用表示最近一次在后台运行的进程 ID (PID) 的特殊变量 $!,将其保存到环境变量 TARGET_PID 中。

使用 ps 命令查看目标进程当前的 nice 值(NI),可以看到它正以默认值 0 运行。

使用 renice 命令将已经在运行的目标进程的 nice 值修改为 15,以降低其优先级。
通过输出结果可以确认,原优先级(old priority 0)已成功变更为新优先级(new priority 15)。

再次使用 ps 命令查询目标进程,确认 nice 值(NI)是否已立即更新为 15。

强制终止(kill -9)已完成实操的测试进程,以清理系统资源。

4. 使用 root 权限赋予高优先级(负数 nice)及注意事项
普通用户无法设置负数 nice 值,为了应用负数 nice 值(-5),我们使用 sudo 管理员权限在后台(&)运行提升了优先级的进程。
被赋予负数 nice 值的进程在 CPU 调度时将拥有更高的执行优先级,从而能够集中分配系统资源。

使用 ps 命令查询正在运行的进程,确认目标进程(sleep)的 nice 值(NI)是否已正确生效为 -5。
从输出结果中可以确认,与普通默认进程(0)不同,该进程已设置为负数 nice 值(-5),并以高优先级运行。

到这里,我们简要了解了在 Linux 服务器出现卡顿时非常实用的 nice 命令调整进程优先级的方法。
当服务器资源紧张时,请根据实际情况合理分配优先级,让系统运行得更加稳定流畅。