对已经在运行中的进程来说,renice算是最省事也最稳妥的优先级调整手段。普通用户通常只能把nice值调高,也就是让进程优先级往下降;只有root才有权限把nice值调低,甚至设成负值。它还支持按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 ja va)
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。