renice是调整已运行进程优先级最直接可靠的方式,普通用户只能调高nice值(降低优先级),root才能调低或设负值;支持按pid、用户或进程组批量修改,需用ps或top验证ni值是否生效。

renice 是调整已运行进程优先级最直接、最可靠的方式,普通用户能调高(
nicer 值变大),root 才能调低或设负值。
用 renice 动态改正在跑的进程
renice 不重启进程就能生效,但权限限制很实际:普通用户只能把自家进程的
ni 值往大了调(比如从 0 改成 10),不能设负数,也不能碰别人家的进程。root 没这限制。
- 先查 PID:
ps aux | grep nginx 或 pidof python3
- 调高自家进程(安全):
renice -n 12 -p 5678
- 调低或设负值(需 root):
sudo renice -n -15 -p 5678
- 批量调同名进程:
sudo renice -n 8 $(pidof java)
注意:
renice 改的是
ni 字段,不是
pri;
pri 是算出来的(≈ 80 +
ni),别指望手动写进
/proc/PID/stat —— 那个文件只读,硬写会失败。
用 top 交互式快速定位再改
适合临时调试,不用记 PID,但得在
top 界面里操作,且只对
SCHED_OTHER 类进程有效(绝大多数普通进程都是)。
- 运行
top,按 r 键
- 输入目标进程 PID,回车
- 输入新
ni 值(-20 到 19),回车
- 看
NI 列是否立刻更新,没变说明权限不够或进程状态异常(比如 D 状态)
别在
top 里输错两次以上,有些系统会直接退出交互模式,得重进。
启动时就设好优先级:nice 命令
适用于还没跑起来的命令,一劳永逸,不依赖进程是否存活。
-
nice -n 15 tar -cf backup.tar /data —— 普通用户常用,降低 CPU 争抢
-
sudo nice -n -18 ./realtime_worker —— root 可设高优,但慎用,可能饿死其他进程
- 省略
-n 也行:nice -5 command 等价于 nice -n -5 command
nice 设的值是初始
ni,后续还能被
renice 覆盖;但它不能用于已存在的进程 —— 那是
renice 的地盘。
验证改没改成功,别信感觉
改完不验证等于没改。必须看
ps 输出里的
ni 和计算出的
pri 是否符合预期。
- 单进程查:
ps -o pid,ni,pri,comm -p 5678
- 按
ni 排序看全局:ps -eo pid,ni,comm --sort=-ni | head -5
- 如果
ni 没变,常见原因:权限不足、PID 错、进程用了 cgroups 限频、或本身是实时调度策略(chrt 设置过)
ni 显示为
- 通常表示该进程不受 CFS 调度器管理(比如用了
SCHED_FIFO),这时
renice 无效,得用
chrt。