当前位置:首页>Linux>Linux命令renice详解和用法介绍

Linux命令renice详解和用法介绍

  • 2026-08-24 13:03:54
Linux命令renice详解和用法介绍

Linux renice 命令详解与用法

renice 是 Linux 中用于调整正在运行进程的优先级的命令,与 nice 命令(用于启动进程时指定优先级)互补,核心作用是修改已存在进程的nice值,从而改变进程获取CPU资源的优先级。

一、核心概念:nice值与进程优先级

Linux 进程的CPU调度优先级由nice值决定,范围是 -20(最高优先级)~ 19(最低优先级),默认值为0。

  • • nice值越小,进程优先级越高,获取CPU资源的机会越多;
  • • nice值越大,进程优先级越低,对其他进程的影响越小;
  • • 普通用户只能提高自己进程的nice值(如从0→5,降低优先级),不能降低(如从0→-1,提升优先级),也不能修改其他用户的进程;
  • • root用户(超级用户) 可以修改任何进程的nice值,无限制。

二、renice 命令基本语法

1. 标准语法

renice [优先级] [选项] [进程/用户/组标识]

2. 关键选项

选项
说明
-p
后面跟进程ID(PID),默认选项(省略时即为按PID修改)
-u
后面跟用户名/UID,修改该用户的所有进程的优先级
-g
后面跟组名/GID,修改该组的所有进程的优先级
-n
(部分系统支持)指定优先级增量(如-n 5表示nice值+5,-n -3表示nice值-3),替代直接写优先级
-h
/--help
查看帮助信息

3. 权限说明

  • • 普通用户:仅能修改自身属主的进程,且只能将nice值调大(降低优先级);
  • • root用户:无限制,可修改任何用户的任何进程,可自由调整nice值(调大/调小)。

三、常用用法示例

前置准备:查看进程的nice值

先通过ps/top命令查看目标进程的PID和当前nice值,方便后续调整:

# 方法1:ps 查看指定进程(如python进程)的PID和nice值(ni列)
ps -l -C python
# 方法2:top 实时查看,按P按CPU优先级排序,ni列为nice值,pid列为进程ID
top
# 方法3:直接查看进程状态文件(最准确)
cat /proc/[PID]/stat  # 第19列即为nice值

示例1:修改单个进程的优先级(最常用)

语法:renice [新优先级] -p [PID](-p可省略)

# 示例:将PID为1234的进程nice值设为5(降低优先级,普通用户可执行)
renice 5 -p 1234
# 省略-p,效果相同
renice 5 1234

# root用户专属:将PID为1234的进程nice值设为-5(提升优先级)
sudo renice -5 -p 1234

示例2:修改某个用户的所有进程优先级

语法:renice [新优先级] -u [用户名/UID]

# 示例:将用户zhangsan的所有进程nice值设为8(普通用户仅能修改自己,root可修改所有)
sudo renice 8 -u zhangsan
# 按UID修改(如UID=1000)
sudo renice 8 -u 1000

示例3:修改某个用户组的所有进程优先级

语法:renice [新优先级] -g [组名/GID]

# 示例:将组名dev的所有进程nice值设为6
sudo renice 6 -g dev
# 按GID修改(如GID=1000)
sudo renice 6 -g 1000

示例4:按优先级增量调整(-n选项)

部分Linux发行版(如CentOS、Ubuntu)支持-n指定增量,无需计算最终nice值,直接调整:

# 示例1:PID=1234的进程nice值+3(如原0→3,降低优先级)
renice -n 3 -p 1234
# 示例2:root用户将PID=1234的进程nice值-4(如原0→-4,提升优先级)
sudo renice -n -4 -p 1234

示例5:同时修改多个进程的优先级

直接跟多个PID,用空格分隔:

# 将PID=1234、5678、9012的进程nice值均设为4
renice 4 -p 1234 5678 9012

四、常见错误与解决

错误1:普通用户尝试降低nice值(提升优先级)

renice -1 -p 1234
# 报错:renice: failed to set priority for 1234 (process ID): Operation not permitted

解决:仅root用户可执行,加sudo重新运行。

错误2:修改其他用户的进程(普通用户)

renice 5 -u root
# 报错:renice: failed to set priority for 进程ID: Operation not permitted

解决:加sudo以root身份执行。

错误3:指定的nice值超出范围(-20~19)

renice 20 -p 1234
# 报错:renice: invalid priority: 20

解决:将优先级调整到-20~19范围内。

五、renice 与 nice 的区别

命令
核心作用
适用场景
权限限制
nice启动进程时
指定初始nice值
预知进程占用CPU高,启动时直接降低优先级(如大文件解压、编译)
普通用户仅能设≥0,root可设-20~19
renice修改已运行进程
的nice值
进程运行中发现CPU占用过高,临时调整优先级,无需重启进程
普通用户仅能调大自身进程的nice值,root无限制

互补使用示例

# 1. nice 启动编译进程,初始nice值设为10(降低优先级,不影响其他操作)
nice -n 10 make -j4

# 2. 运行中发现仍占CPU过高,用renice将其PID(假设为9876)调至15
renice 15 -p 9876

六、实战场景:优化系统资源

场景1:后台大任务占用CPU过高,卡顿前台操作

当执行tar/unzip/编译/数据处理等后台任务时,CPU占用100%导致前台终端、桌面卡顿,可降低其优先级:

# 1. 查找大任务PID(如tar进程)
ps -ef | grep tar
# 2. 降低其优先级,nice值设为15
renice 15 -p [tar的PID]

场景2:核心业务进程(如数据库、服务)响应慢,提升优先级

root用户将核心进程(如MySQL、Nginx)的优先级提升,确保CPU资源优先分配:

# 1. 查找MySQL PID
ps -ef | grep mysqld | grep -v grep
# 2. 提升优先级,nice值设为-5
sudo renice -5 -p [MySQL的PID]

七、注意事项

  1. 1. 不要随意将进程nice值设为-20:最高优先级会抢占几乎所有CPU资源,可能导致系统其他进程(如系统服务、终端)无响应,仅对极核心的单进程临时使用;
  2. 2. renice修改的是进程的nice值,非实时优先级:Linux 调度分为普通进程(CFS调度,由nice值控制)和实时进程(SCHED_FIFO/SCHED_RR),renice仅对普通进程有效;
  3. 3. 子进程继承父进程nice值:用renice修改父进程后,已创建的子进程不会同步修改,需单独调整子进程PID;
  4. 4. 进程重启后nice值恢复默认:renice是临时修改,进程重启后会回到默认nice值(0),若需永久生效,需在进程启动脚本中用nice指定初始值。

永久生效方法示例(Nginx)

编辑Nginx启动脚本,在启动命令前加nice -n [优先级]:

# 编辑启动脚本
vim /etc/init.d/nginx
# 找到启动行,添加nice
nice -n -3 /usr/sbin/nginx
# 保存后,重启Nginx即永久生效
service nginx restart

nice & renice 速查命令表

核心规则

nice值范围:-20(最高优先级)~ 19(最低优先级),默认0
✅ root:可修改任意进程,自由调整nice值(升/降)
❌ 普通用户:仅修改自身进程,只能调大nice值(降低优先级)

命令类型
核心场景
语法/示例
权限要求
备注
nice
启动进程时指定初始优先级
基础语法:nice -n [优先级] 命令
普通用户:优先级≥0
root:无限制
进程启动后直接生效,替代默认0
后台大任务(解压/编译)降优先级
nice -n 10 tar -zxvf bigfile.tar.gz
普通用户/root
不抢占前台CPU,避免系统卡顿
核心服务(数据库/服务)提优先级
sudo nice -n -5 /usr/sbin/mysqld
root专属
优先分配CPU资源,提升响应速度
renice
修改单个进程优先级(最常用)
基础语法:renice [新优先级] -p [PID]
示例:renice 15 -p 1234
自身进程:普通用户/root
其他进程:root
-p
可省略,如renice 15 1234
按增量调整进程优先级
语法:renice -n [增量] -p [PID]
示例1(降优先级):renice -n 3 -p 1234
示例2(提优先级):sudo renice -n -4 -p 1234
增量为正:普通用户/root
增量为负:root专属
无需计算最终值,直接±调整
修改某个用户所有进程
语法:renice [新优先级] -u [用户名/UID]
示例:sudo renice 8 -u zhangsan
root专属
批量调整,适用于用户进程占满CPU场景
修改某个用户组所有进程
语法:renice [新优先级] -g [组名/GID]
示例:sudo renice 6 -g dev
root专属
批量调整组内所有用户进程
同时修改多个进程
语法:renice [新优先级] -p PID1 PID2 PID3
示例:renice 4 -p 1234 5678 9012
自身进程:普通用户/root
其他进程:root
多PID用空格分隔
辅助查询
查看进程PID+nice值(ni列)
ps -l -C [进程名]
示例:ps -l -C python
普通用户/root
快速定位目标进程核心信息
实时查看所有进程优先级
top
(按P按CPU优先级排序,ni列=nice值)
普通用户/root
动态监控,支持快捷键筛选
精准查看单个进程nice值
cat /proc/[PID]/stat
(第19列为nice值)
普通用户/root
系统底层文件,最准确无误差

高频排错

报错信息
原因
解决方法
Operation not permitted
1. 普通用户修改其他用户进程
2. 普通用户降低nice值(提优先级)
加sudo以root身份执行
invalid priority: 20
指定nice值超出-20~19范围
调整优先级至合法区间
进程优先级修改后不生效
目标为实时进程(非CFS普通进程)
renice仅对普通进程有效,实时进程需用chrt命令

最新文章

随机文章