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、持续多久,降权只是临时止血;根因往往是任务调度重叠或缺少资源配额,事后要补上正式限制。