首页/系统/Linux 运维命令速查/renice 调整运行中进程优先级
进程与作业69 条

renice 调整运行中进程优先级

给已在跑的进程改 nice 值:renice -n 10 -p PID;给整个进程组/用户调整用 -g/-u,救火时把扫库任务降下去。

Linux 运维命令速查系统更新于 2026-10-13

renice 调整运行中的优先级

renice 修改正在运行进程的调度优先级(nice 值),改动立即生效、无需重启进程:-n 指定新值(范围通常 -20 到 19,数值越小优先级越高),-p 指定进程、-g 指定进程组、-u 指定用户。最典型的用法是救火 —— 把正在抢 CPU 的报表或扫库任务降下去,让核心服务先跑起来。

基本信息

适用平台Linux 与类 Unix(util-linux)
语法renice -n 值 [-p PID | -g PGID | -u 用户]
取值范围-20(最高优先级)到 19(最低)
权限要求降低优先级普通用户可做;提高优先级需 root
相关命令nice、ionice、taskset、ps -o ni
生效方式立即生效,不影响已运行进程的状态

典型使用场景

  • 备份、报表类批量任务占满 CPU,临时降权保核心服务
  • 救火时给抢占资源的进程让路
  • 调试时临时提高关键进程优先级
  • 按用户降权整批任务
  • 配合 ionice 同时限制磁盘 IO 优先级

常用示例

常用示例
renice -n 15 -p 1234                 # 降低单个进程的优先级
renice -n -5 -p 1234                 # 提高优先级:需要 root
pids=$(pgrep -f 'python.*report'); renice -n 10 -p $pids   # 批量降权脚本类进程
renice -n 5 -u backup                # 该用户的所有进程
ps -o pid,ni,cmd -p 1234             # 核对 NI 列是否已生效
nice -n 10 ./batch.sh &              # 启动时就设优先级,比事后调整更省事
ionice -c2 -n7 -p 1234               # 同时降低 IO 优先级,避免磁盘被抢占

参数与边界

参数含义注意
-n 值设定新的 nice 值数值越小优先级越高,范围 -20 到 19
-p PID作用于指定进程可一次传入多个 PID
-g PGID作用于进程组适合整组批处理任务
-u 用户作用于该用户全部进程影响面大,动手前先列清单
权限边界提高优先级需 root非 root 受 hard limit 约束,只能在范围内下调
ps -o ni核对是否生效改完立刻复核 NI 列
优先级只决定 CPU 调度机会,不解决 IO 或内存瓶颈:磁盘被抢占时配合 ionice,CPU 亲和性用 taskset,需要硬性上限则用 cgroup 配额。
对整组或整用户执行 renice 影响面较大:先用 ps -u 用户 -o pid,ni,cmd 看清对象,避免把同一用户名下的关键服务一起降权。
先把证据拿到手再降权:用 top 与 pidstat 记下是谁在吃 CPU、持续多久,降权只是临时止血;根因往往是任务调度重叠或缺少资源配额,事后要补上正式限制。

易错点

  • 非 root 想把 nice 调到更小的数值:受 hard limit 约束会失败,别误判为命令写错
  • 只调主线程:多线程进程的大量工作线程需要按线程或进程组一并处理,否则观感有限
  • 以为 renice 能解决卡顿:CPU 优先级调低但磁盘仍被扫库任务打满时,服务照样慢,要配 ionice
  • 对整用户批量降权:可能把该用户名下的关键服务一起降下去,动手前先确认影响范围

数据来源与参考

  • man 1 renice(util-linux 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌