renice 是 Linux 中动态调整运行进程 nice 值的命令,通过内核接口影响 CFS 调度器的 CPU 时间分配;nice 值越低越抢占资源,越高越谦让;需先查 PID 和当前值,推荐用 renice -n N -p PID 语法,支持相对/绝对调整及批量操作,但受用户权限和 0–19 范围限制。

renice 是 Linux 中专门用于动态修改运行中进程 nice 值(即调度权重)的命令。它不重启进程,直接通过内核接口调整 CFS 调度器对进程的 CPU 时间分配倾向——nice 值越低,进程越“抢资源”;越高,则越“谦让”。关键不是“设一个数就完事”,而是理解目标、权限和写法是否真正生效。
先确认目标进程和当前 nice 值
别凭印象改,先查准:
- 用 ps -eo pid,ni,user,comm,%cpu --sort=-%cpu | head -10 找 CPU 占用靠前的进程,并看 ni 列(即 nice 值)
- 或精确定位:比如找某个 Python 脚本,ps aux | grep 'my_script.py',再记下 PID
- 执行后立刻验证:ps -o pid,ni,comm -p 1234,两次对比才可靠
正确写法:推荐显式带 -n 和 -p
虽然 renice 15 1234 语法合法,但易出错。更安全、可读性高、适合脚本的写法是:
- renice -n 15 -p 1234 → 把 PID 1234 的 nice 值**设为绝对值 15**
- renice -n +3 -p 1234 → 在原值基础上**加 3**(比如原来是 5,变成 8)
- renice -n -2 -p 1234 → 在原值基础上**减 2**(仅 root 可成功)
- 一次调多个:renice -n 12 -p 1234 -p 5678 -p 9012(注意不是空格连写)
普通用户能做什么、不能做什么
权限限制不是“报错就停”,常静默失败或部分生效:
- 只能调整自己启动的进程**:ps -o pid,user,comm -p 1234 中 user 不是你,就不能动
- 只能增大 nice 值**(即降低优先级):从 5 改成 10 ✅,从 5 改成 0 ❌(需 root)
- 不能超出0–19 范围**:设 -n 20 或 -n -1 都会失败,即使 root 最高也只能设 -20
按用户或进程组批量调权
适合管理自己所有后台任务,比逐个找 PID 更高效:
- renice -n 10 -u $USER → 把当前用户所有运行中的进程 nice 值统一设为 10
- renice -n 8 -g 4567 → 把进程组 ID 为 4567 的全部进程(如一个 shell 启动的整个任务树)设为 8
- 注意:-g 指进程组 ID(PGID),不是会话 ID(SID)或终端号











