当前位置:首页>Linux>Linux运维必懂:nice命令实战详解,轻松管控进程cpu优先级,服务器再也不卡顿!

Linux运维必懂:nice命令实战详解,轻松管控进程cpu优先级,服务器再也不卡顿!

  • 2026-09-10 13:31:38
Linux运维必懂:nice命令实战详解,轻松管控进程cpu优先级,服务器再也不卡顿!

前面介绍过ionice,是关于io优先级的,今天介绍的nice是有关cpu优先级调度的。做linux运维的小伙伴,日常肯定遇到过这些头疼场景:

服务器凌晨跑数据库备份、日志打包,cpu被占满,白天业务访问卡顿;

编译代码、大数据分析等高耗cpu任务,抢占核心业务进程资源;

关键监控、告警服务响应变慢,急需提升进程cpu调度优先级。

很多人第一反应是杀进程、限制cpu使用率,其实完全没必要这么做。linux原生自带nice命令就能解决。一行命令就能调整进程cpu优先级,合理分配服务器算力,不用改配置、不用重启服务,是运维排障和日常调度刚需工具!

一、nice的核心功能

linux系统采用动态优先级调度机制,内核根据nice值决定进程获取cpu时间片的多少,nice值越小,进程优先级越高。

1. nice值取值范围 

取值区间:-20 ~ 19 

默认值:0(系统所有进程默认初始优先级) 

最高优先级:-20(最优先抢占cpu)

最低优先级:19(系统空闲时才会分配cpu资源) 

2. 权限限制(重中之重) 

普通用户:只能调高nice值(降低进程优先级),无法调低,防止普通用户恶意抢占服务器资源;

 root用户:可以随意修改所有nice值,既能调高也能调低,自由提升核心进程优先级。

3. 快速查看进程 nice值

日常排查优先级,用top/ps命令一键查看:

#top查看,NI列即为nice值top#ps精准查看指定进程nice值ps -o pid,ni,cmd -p 进程PID

二、nice的基础语法

nice命令仅用于启动新进程时预设优先级,语法比较简单:

nice -n [nice值] 要执行的命令/程序

-n:指定nice优先级数值,可省略-n直接写数值,例如nice -10 command等价nice -n -10 command

三、nice的实战案例

场景 1:后台低优先级任务(最常用,无需root)

适合:日志切割、数据备份、文件压缩、定时脚本、离线数据分析等非核心后台任务,最大限度避免抢占业务cpu。

案例 1:最低优先级打包备份文件

nice -n 19 tar zcf /data/backup/log-$(date +%Y%m%d).tar.gz /var/log/

nice -n 19:降低tar进程cpu调度优先级,打包时尽量不抢占系统资源,适合业务高峰期备份。

案例 2:后台运行耗时脚本,降低cpu占用

nice -n 10 bash /data/ceshi/mem.sh &

备注:普通用户日常运维,推荐统一设置nice值 10~19,安全无风险,不用申请 root 权限。

场景 2:核心业务高优先级任务(需要root权限)

适合:监控进程、告警服务、数据库核心进程、实时接口服务等不能卡顿的关键程序,抢占更多cpu资源,保证响应速度。

案例 1:提升监控服务优先级

sudo nice -n -10 /usr/local/prometheus/prometheus#root用户可以不加sudo

案例 2:高优先级编译程序,加快编译速度

nice -n -5 make

备注:不要随意设置nice值为 - 20,优先级过高会抢占系统内核进程资源,引发服务器死机、命令无响应!日常核心业务设置-5 ~ -10足够了。

场景 3:默认nice值启动进程

不加-n参数,默认nice值 + 10,轻微降低进程优先级:

nice sleep 300

四、联动renice:修改已经运行的进程优先级

很多时候任务已经启动,不方便重启,这时候nice无能为力,搭配renice 命令,直接修改正在运行的进程优先级。

renice的基础语法

renice [nice值] -p 进程PID

案例

1.将pid为7579的运行中进程,调低优先级(普通用户可用)

ps -o pid,ni,cmd -p 7579renice -5 -p 7579

2.将业务核心进程调高优先级(需要root)

sudo renice -8 -p 7579

补充:按用户 / 进程组统一调整优先级

#修改某个用户所有进程优先级renice 10 -u nginx#修改某个进程组所有进程优先级renice 5 -g 进程组ID

nice和renice的区别

#nice:启动新进程时设置优先级#renice:修改已运行进程的优先级

nice与cpulimit的区别

#nice:调整优先级,不限制使用率#cpulimit:硬限制 CPU 使用率百分比

五、注意事项

在nice的使用中,有些人经常会产生使用误区:

误区1:nice可以强制限制进程cpu使用率

错误:nice只是调整cpu调度优先级,不是硬限制cpu占用率。

正确:如果需要严格限制进程cpu使用率,搭配cpulimit工具;磁盘io优先级调整用ionice命令。

误区2:普通用户可以调低nice值提升优先级

错误:linux权限机制限制,普通用户执行nice -n -5 command直接报错,必须 sudo提权或者使用root用户。

误区3:优先级越高,性能一定翻倍

错误:nice只针对cpu密集型进程生效;io密集型进程(读写磁盘为主),修改 nice 值几乎没有效果。

生产最佳实践

1. 所有定时备份、日志清理、离线计算脚本,统一加nice -n 19;

2. 业务中间件、数据库进程不要盲目调高优先级,默认0即可;

3. 线上紧急故障,仅临时给关键告警、监控进程调高优先级;

4. 禁止业务程序设置nice=-20,避免系统内核出现紊乱。

六、nice vs ionice区别

nice:cpu优先级调度,如果cpu占用过高,进程抢算力的场景比较适用。

ionice:磁盘io调度优先级,磁盘读写爆满,io卡顿的场景比较适用。

总结起来就是服务器资源调优,cpu卡顿用nice,磁盘卡顿用ionice。

七、总结

nice命令看着简单,却是服务器日常调优、资源隔离的轻量化神器,不用复杂配置、不用重启服务,一行命令就能合理分配cpu资源。

记住核心口诀:数值越小优先级越高,普通用户只能加不能减,后台任务拉满 19,核心业务少加负数,切忌无脑拉满 - 20!

如果你觉得文章对你的运维工作有帮助,记得点赞加收藏。

#运维  #linux运维  #linux实战  #nice  

最新文章

随机文章