renice 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
renice——进程管理命令族(见进程管理与调度命令族)。进程已经跑起来才发现它太占 CPU?不用杀掉重来,renice 当场改它的优先级。
renice 修改已经在运行的一个或多个进程的 nice 值(调度优先级)。它是 nice 的"事中补救"版本。
一、基本用法
bash
renice 10 -p 1234 # 把 PID 1234 的 nice 改成 10(更客气)
renice -5 -p 1234 1235 # 可一次改多个 PID
renice 15 -u backup # 把 backup 用户的所有进程都调低优先级
renice 5 -g 2000 # 把进程组 2000 下所有进程调整
-p按 PID(最常用),-u按用户名批量改,-g按进程组。一次可以跟多个目标。nice 值范围仍是 -20~19。
二、权限限制
bash
# 普通用户:只能把自己的进程往"更客气"(nice 更大)方向调
# 且不能越过自己当前的优先级上界
renice 5 -p $$ # 把自己的 shell 调低优先级(OK)
renice -5 -p 1234 # 非 root 提优先级通常失败和 nice 一样:普通用户只能把 nice 调大(降优先级),且只能改自己的进程;要提升别人民进程优先级必须 root。这是多用户系统的基本隔离。
三、renice vs nice
| 命令 | 时机 | 对象 |
|---|---|---|
| nice | 启动前 | 新进程 |
renice | 运行中 | 已存在进程(按 PID/用户/组) |
进程还没起用 nice;已经跑着要调,用 renice。两者控制的是同一个 nice 值,只是作用的生命周期阶段不同。
四、踩坑:优先级并不等于"保证 CPU"
bash
# 把所有进程都 renice 成 19,系统整体并不会更快——
# 相对优先级只在互相竞争时才体现,空闲时该跑还是跑nice 只影响"竞争时的先后",不限制"绝对 CPU 占用"。一个 renice 成 19 的进程,在系统空闲时照样能占满 CPU。要真正限制资源得用 cgroup / [cpulimit] 之类。
五、实战:临时给失控脚本降权
bash
# 发现某个批处理脚本 CPU 占用过高,先拿到 PID 再当场降优先级
pid=$(pidof batch_job)
renice 19 -p $pid一句话总结
renice = 改运行中进程的优先级:-p 按 PID、-u 按用户、-g 按进程组批量调整 nice 值;普通用户只能降自己进程的优先级(提权需 root)。它是 nice 的"事中补救"版——一个管启动、一个管运行中。