对于已经在运行的进程来说,renice 通常是 Linux 调整进程优先级最省心、也最稳妥的方法。普通用户一般只能把 nice 值调高,也就是让进程优先级降低;只有 root 用户才有权限把 nice 值调低,甚至设置为负值。它还支持按 PID、按用户,或按进程组批量调整。修改完成后,最好再配合 ps 或 top 检查一下 ni 值是否已经真正生效。

renice 是调整已运行进程优先级最直接、最可靠的方式,普通用户可以把 nice 值调大,而 root 才能把它调小或设为负数。
用 renice 动态调整正在运行的进程
renice 的优势是无需重启进程就能立即生效,但权限限制也很明确:普通用户只能把自己进程的 ni 值往大了调(例如从 0 改为 10),不能设置负值,也不能修改其他用户的进程。root 则不受这些限制。
- 先查 PID:
ps aux | grep nginx或pidof python3 - 调高自己进程的 nice 值(更安全):
renice -n 12 -p 5678 - 调低 nice 值或设置负数(需要 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 类型的进程有效(绝大多数普通 Linux 进程都属于这一类)。
- 运行
top,按r键 - 输入目标进程的 PID,回车
- 输入新的
ni值(-20 到 19),回车 - 观察
NI列是否立即更新;如果没有变化,通常说明权限不足或进程状态异常(例如 D 状态)
top 里连续输错多次,有些系统可能会直接退出交互模式,需要重新进入。
启动时提前设置优先级:nice 命令
如果命令还没有启动,使用 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 的用途。
验证是否修改成功,不要只凭感觉
调整完 Linux 进程优先级后,如果不验证,等于没有真正确认结果。最稳妥的方法是查看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 来调整调度策略。