linux调整进程优先级核心靠nice和renice:nice用于启动新进程时设初始nice值(普通用户0–19,root可设-20至19),renice用于动态调整运行中进程,支持按pid、用户或组批量修改,需注意权限、d状态及cgroups限制。

Linux 中调整进程优先级,核心就靠 nice 和 renice 两个命令。它们不改变进程功能,只影响调度器给它分配 CPU 时间的“热情程度”——值越小越抢资源,越大越谦让。
启动新任务时用 nice 设定初始优先级
适合在执行命令前就规划好资源占用,比如跑备份、压缩这类耗 CPU 但不紧急的任务。
- 普通用户只能设 0–19:例如
nice -n 12 tar -cf archive.tar /data,让压缩更“低调” - 想设负值(提高优先级)必须加
sudo,且目标程序未被 cgroups 限制:例如sudo nice -n -10 ./db-import - 注意写法:
nice -5 cmd实际等价于nice -n 5 cmd,不是提升优先级;要提权必须显式写-n -5
运行中任务用 renice 动态调优
运维中最常用场景:发现某个服务响应变慢,或后台任务突然吃满 CPU,需要即时干预。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 先查 PID:
ps aux | grep nginx或pidof nginx - 单个进程调整:
sudo renice -n 8 -p 12345 - 批量调同一用户所有进程:
sudo renice -n 15 -u www-data - 按进程名批量调(配合 pidof):
renice -n 10 $(pidof python3)
用 top 实时交互式调整
适合快速定位并修改,不用记 PID,也方便反复试错。
- 终端输入
top,按r键 - 输入目标进程 PID,回车
- 输入新 nice 值(如
6),回车确认 - 观察界面中 NI 列是否更新,PRI 列会自动按
PRI = 80 + NI计算
验证和避坑要点
调完不验证,等于没调。常见“看似调了但没生效”的原因有三个:
- 进程处于 D 状态(不可中断等待),此时
renice静默失败,ps仍显示旧值 - 权限不足:普通用户不能对别人进程操作,也不能设负值;非 root 执行
sudo renice -n -5可能因 sudoers 配置被拒 - cgroups v2 生效时(如 systemd 启动的服务),
cpu.weight或cpu.max会覆盖 nice 效果,需检查cat /proc/PID/cgroup - 验证命令:
ps -o pid,ni,pri,comm -p 12345或ps -eo pid,ni,comm --sort=-ni | head -5










