首页/系统/Linux 运维命令速查/nice 以指定优先级启动
进程与作业69 条

nice 以指定优先级启动

以调整后的 CPU 优先级启动命令:值越低优先级越高(-20 最高、19 最低);备份/压缩等重任务用 +10 起步避免抢占业务。

Linux 运维命令速查系统更新于 2026-10-13

nice 是什么

nice 用来以指定的 CPU 调度优先级启动一个命令。nice 值范围是 -20 到 19,数值越小优先级越高:默认是 0,普通用户只能把值调大也就是降低优先级,要设为负值必须由 root 执行。典型用法是给备份、压缩、索引重建这类「重要但不着急」的重任务加 +10 以上的偏移,让业务进程在 CPU 竞争时优先拿到时间片。它只影响有竞争时的分配,系统空闲时低优先级任务照样跑满 CPU。

基本信息

适用平台GNU/Linux、macOS(coreutils 与系统自带 nice)
语法nice [-n 增量] 命令
取值范围-20 最高优先级到 19 最低,默认 0
权限普通用户只能调大数值,负值需要 root
相关命令renice 调整运行中进程,ionice 调整磁盘 IO 优先级
容器环境cgroup 的 CPU 权重可能覆盖 nice 的实际效果

典型使用场景

  • 夜间备份、打包压缩等重任务降低优先级,避免抢占在线业务。
  • 索引构建、日志归档这类长耗时任务错峰运行。
  • 批量数据处理任务限制资源占用,保证关键服务响应。
  • 排查 CPU 竞争问题时用低优先级复现现象。
  • 组合 ionice 同时降低 CPU 与磁盘 IO 优先级。

常用写法

常用写法
nice -n 10 tar czf backup.tgz /data             # 低优先级打包备份
nice -n 19 ionice -c3 rsync -a /data/ /backup/  # 最低优先级组合
nice                                            # 查看当前 shell 的默认 nice 值
nice -n -5 important-cmd                        # 提高优先级,需要 root
nice -n 10 ./batch-job.sh > /var/log/batch.log 2>&1 &   # 后台低优先级批次
ps -eo pid,ni,cmd | sort -k2 -n | head          # 看哪些进程 nice 值最低
renice +10 -p 1234                              # 调整已运行进程的优先级

要点对照

项目说明使用要点
取值范围-20 到 19,默认 0数值越小优先级越高
普通用户只能调大数值负值必须 root,脚本别假设有这个权限
renice调整运行中进程已启动的任务可以事后调整
ionice调整磁盘 IO 优先级CPU 与 IO 是两套机制,需分别设置
容器环境cgroup 权重优先nice 调了也可能看不出效果
系统空闲时优先级影响很小低优先级任务同样能跑满 CPU
nice 只决定 CPU 竞争时的分配比例:系统空闲时不论优先级高低都能跑满 CPU,所以「加了 nice 任务还是很快」并不矛盾。
容器里 CPU 主要受 cgroup 权重与配额约束,nice 的实际效果可能被覆盖。在 Kubernetes 环境中应优先用资源请求与限制表达需求。
提高优先级也就是设置负值需要 root 权限;部署脚本里不要假设可以设置负的 nice 值,否则在普通用户下会直接报错退出。

易错点

  • 普通用户尝试把优先级调高会报权限错误,脚本缺少容错时整个任务中断;提升优先级需要 root,普通用户只能降低。
  • 把 nice 当成限速手段:它不限制 CPU 使用量,只影响竞争时的分配比例,任务仍可能吃满 CPU;需要硬限制请用 cgroup 配额。
  • 给交互式前台任务设低优先级后本机明显变卡,误判为系统故障;重任务应放后台并组合低优先级运行。
  • 在容器里调整 nice 期待明显效果,实际被 cgroup 权重覆盖,反而误判为配置没有生效。

数据来源与参考

  • man 1 nice(GNU coreutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌