linux中调整进程优先级核心是修改ni值,因pri=80+ni自动计算;ni范围-20~19,越小优先级越高;普通用户仅能增大ni(降低优先级),root可设全范围;可通过ps、top查看,nice启动新进程,renice或top动态调整已有进程。

Linux 中调整进程优先级,核心是修改 NI(nice 值),因为 PRI(实际调度优先级)由系统自动计算:PRI = 80 + NI。NI 范围是 -20 到 19,数值越小,进程越早被 CPU 调度。
查看当前进程的优先级参数
使用以下命令可清晰看到 UID、PID、PRI 和 NI:
- ps -l:显示当前终端下用户进程的详细信息,含 PRI 和 NI 列
- ps -eo pid,ppid,ni,pri,comm:自定义输出关键字段,适合快速筛查
- top:运行后按 Shift+P 按 PRI 排序,按 Shift+N 按 NI 排序,实时观察
启动时指定 nice 值(适用于新进程)
用 nice 命令在程序启动时设定初始 NI:
- nice -n -5 vim file.txt:以 NI = -5 启动 vim,提升其调度优先级
- nice -n 10 ./myapp:以 NI = 10 启动 myapp,降低其 CPU 占用权重
- 注意:普通用户只能设置 NI ≥ 0(即不能提权),只有 root 可设 -20~19 全范围
运行中动态调整 nice 值(适用于已有进程)
对已运行的进程,用 renice 或 top 交互命令 修改:
- renice -n -3 1234:将 PID 为 1234 的进程 NI 设为 -3
- renice 5 1234:将该进程 NI 设为 5(不是“加5”,而是直接赋值)
- top → 按 r → 输入 PID → 输入新 NI 值:图形化方式,适合临时调试
- 同样,非 root 用户只能把 NI 调高(数值变大),不能调低(数值变小)
权限与限制说明
调整优先级不是无约束的:
- 普通用户只能降低自己进程的“相对优先级”(即增大 NI),防止干扰系统关键服务
- root 用户可任意设置 NI ∈ [-20, 19],但设置 NI = -20 并不等于实时进程,仅属最高普通优先级
- NI 改变后,PRI 会立即更新(如原 PRI=80、NI=0 → 设 NI=-5 → PRI=75),调度器下一周期即生效
- 过度提高某进程优先级可能导致其他进程响应延迟,尤其在 CPU 繁忙时易引发饥饿现象











