菜鸟科技网

renice命令如何调整进程优先级?

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

renice命令如何调整进程优先级?-图1
(图片来源网络,侵删)

什么是 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...

常用选项:

renice命令如何调整进程优先级?-图2
(图片来源网络,侵删)
  • -p:指定进程 ID,这是最常用的方式。
  • -u:指定用户名。
  • -g:指定用户组名。
  • -h:显示帮助信息。
  • -v:显示详细输出。

使用示例

示例 1:调整单个进程的优先级

假设你有一个非常消耗 CPU 的进程,其 PID 是 1234,你希望降低它的优先级,以免影响系统其他操作。

  1. 找到进程的 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
  2. 使用 renice 将其 Nice 值从默认的 0 调整到 10(降低优先级):

    # 需要管理员权限
    sudo renice 10 -p 1234
  3. 查看结果:

    renice命令如何调整进程优先级?-图3
    (图片来源网络,侵删)
    # 输出类似:
    # 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

renicenice 都与进程优先级有关,但它们的使用场景不同:

特性 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 的进程优先级调低)

重要注意事项

  1. 权限问题

    • 普通用户只能对自己拥有的进程进行 renice 操作,并且只能将 Nice 值调高(例如从 0 调到 5),不能调低。
    • 超级用户(root)可以修改任何进程的 Nice 值,无论是调高还是调低。
  2. 范围限制

    • Nice 值的有效范围是 -20 到 19,如果你输入超出这个范围的值,renice 命令会报错。
  3. 实时进程

    • renice 不能修改那些被设置为实时调度策略的进程,这些进程通常使用 chrt 命令来管理。renice 只能修改普通(SCHED_OTHER/批处理/空闲)调度策略的进程。
  4. 影响

    • 调整 Nice 值是一个软性的优先级调整,它只是给操作系统一个“建议”,告诉它这个进程有多“礼貌”,在 CPU 资源极度紧张时,即使优先级很低的进程也可能被调度,但频率会低很多。

renice 是一个非常实用的系统管理工具,用于动态地平衡系统负载,当你发现某个进程(如视频编码、科学计算、备份任务)占用了过多 CPU 资源,影响了系统的正常响应时,可以使用 renice 来降低它的优先级,让系统变得更加“礼貌”和流畅。

分享:
扫描分享到社交APP
上一篇
下一篇