renice 是一个在 Linux 和其他类 Unix 系统中用于调整运行中进程的优先级的命令,这个优先级由Nice 值来表示。

什么是 Nice 值?
Nice 值是一个从 -20 到 +19 的整数,它决定了进程获取 CPU 时间的“优先级”。
- Nice 值越低(-20),优先级越高,操作系统会更倾向于将 CPU 时间分配给这个进程,这个进程的行为可以说是“不客气”的(less "nice"),它会“抢夺”更多的 CPU 资源。
- Nice 值越高(+19),优先级越低,进程会更“礼貌”(more "nice"),只有在系统有空闲 CPU 资源时,它才会被执行,这通常用于不紧急的后台任务,以避免影响前台交互式程序的响应速度。
默认 Nice 值是 0。
renice 命令的基本语法
renice [选项] nice值 进程ID...
或者通过用户/组来调整:
renice [选项] nice值 -u 用户名... renice [选项] nice值 -g 组名... renice [选项] nice值 -p 进程ID...
常用选项:

-p:指定进程 ID,这是最常用的方式。-u:指定用户名。-g:指定用户组名。-h:显示帮助信息。-v:显示详细输出。
使用示例
示例 1:调整单个进程的优先级
假设你有一个非常消耗 CPU 的进程,其 PID 是 1234,你希望降低它的优先级,以免影响系统其他操作。
-
找到进程的 PID:
ps aux | grep my_heavy_process # 假设输出是:user 1234 50.2 2.1 4123456 123456 ? Sl 10:30 15:23 my_heavy_process # PID 是 1234
-
使用
renice将其 Nice 值从默认的 0 调整到 10(降低优先级):# 需要管理员权限 sudo renice 10 -p 1234
-
查看结果:
(图片来源网络,侵删)# 输出类似: # 1234 (process ID) old priority 0, new priority 10
这个进程的优先级就变低了。
示例 2:调整所有属于某个用户的进程的优先级
假设有一个系统用户 backup,它正在执行一个备份任务,你希望这个任务的所有进程都获得较低的优先级。
# 将用户 'backup' 的所有进程的 Nice 值调整为 15 sudo renice 15 -u backup
示例 3:调整某个用户组的所有进程的优先级
假设你有一个名为 webdev 的用户组,组内的所有开发工具进程都不应该占用太多资源。
# 将用户组 'webdev' 的所有进程的 Nice 值调整为 5 sudo renice 5 -g webdev
示例 4:尝试提升进程优先级(设置负的 Nice 值)
假设你有一个实时视频编码任务,需要尽可能高的 CPU 优先级。
# 将 PID 为 5678 的进程的优先级提升到最高 -10 sudo renice -10 -p 5678
注意: 只有超级用户(root)才能将进程的 Nice 值设置为比当前值更低的数字(即提升优先级),普通用户只能将自己拥有的进程的 Nice 值调高(降低优先级),并且不能超过当前的值。
renice vs nice
renice 和 nice 都与进程优先级有关,但它们的使用场景不同:
| 特性 | nice |
renice |
|---|---|---|
| 功能 | 启动新进程时指定其初始 Nice 值。 | 修改**已存在**进程的 Nice 值。 |
| 时机 | 在进程创建之前。 | 在进程运行期间。 |
| 语法 | nice [选项] 命令 |
renice [选项] nice值 -p PID |
| 示例 | nice -n 15 tar -czf backup.tar.gz /data(以较低的优先级启动 tar 命令) |
sudo renice 10 -p 1234(将已运行的 PID 1234 的进程优先级调低) |
重要注意事项
-
权限问题:
- 普通用户只能对自己拥有的进程进行
renice操作,并且只能将 Nice 值调高(例如从 0 调到 5),不能调低。 - 超级用户(root)可以修改任何进程的 Nice 值,无论是调高还是调低。
- 普通用户只能对自己拥有的进程进行
-
范围限制:
- Nice 值的有效范围是 -20 到 19,如果你输入超出这个范围的值,
renice命令会报错。
- Nice 值的有效范围是 -20 到 19,如果你输入超出这个范围的值,
-
实时进程:
renice不能修改那些被设置为实时调度策略的进程,这些进程通常使用chrt命令来管理。renice只能修改普通(SCHED_OTHER/批处理/空闲)调度策略的进程。
-
影响:
- 调整 Nice 值是一个软性的优先级调整,它只是给操作系统一个“建议”,告诉它这个进程有多“礼貌”,在 CPU 资源极度紧张时,即使优先级很低的进程也可能被调度,但频率会低很多。
renice 是一个非常实用的系统管理工具,用于动态地平衡系统负载,当你发现某个进程(如视频编码、科学计算、备份任务)占用了过多 CPU 资源,影响了系统的正常响应时,可以使用 renice 来降低它的优先级,让系统变得更加“礼貌”和流畅。
