linux中nice值范围为-20(最高)到+19(最低),默认0;可用nice启动新进程、renice调整运行中进程,普通用户仅能调高nice值;top或ps可验证,ionice需配合处理i/o密集任务。

Linux 中的 nice 值控制进程获取 CPU 时间的相对权重,范围是 -20(最高优先级)到 +19(最低优先级),默认为 0。数值越小,进程越“强势”,越容易抢到 CPU;数值越大,越“谦让”,越愿意让出资源。
用 nice 启动新进程时指定优先级
在命令前加 nice -n N 即可为即将启动的进程设置 nice 值:
- nice -n 10 backup.sh:以 nice=10 运行脚本(普通用户常用,降低其 CPU 抢占性)
- nice backup.sh:等价于 nice -n 10 backup.sh,不写 -n 时默认加 10
- sudo nice -n -5 monitor:只有 root 或有 CAP_SYS_NICE 权限才能设负值,用于关键服务保障
用 renice 动态调整运行中进程的优先级
对已启动的进程,用 renice 修改其 nice 值,无需重启:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 先查 PID:ps aux | grep nginx 或 pgrep -f "long_task"
- 调低优先级(更谦让):renice 15 1234
- 恢复默认:renice 0 1234
- 批量按用户调整:renice 10 -u alice
注意:普通用户只能调高自己进程的 nice 值(即让其更谦让),不能提高优先级(设更小的 nice 值);root 可任意修改。
验证 nice 值是否生效
top 默认不显示 NI 列,容易误判:
- 在 top 中按 f → 方向键选中 NI → 按空格启用 → q 退出
- 用 ps 直接查:ps -o pid,ni,comm -p 1234
- 若发现没变化,可能是 systemd、容器或 cgroup 已预设并覆盖了你的设置
搭配 ionice 处理 I/O 密集型任务
nice 只影响 CPU 调度,对磁盘读写无效。日志压缩、数据库备份这类任务光调 nice 不够:
- nice -n 10 ionice -c 3 tar -cf archive.tar /data:-c 3 表示 idle 类,只在磁盘空闲时工作
- 查某进程当前 I/O 优先级:ionice -p 1234
- I/O 优先级和 nice 是正交机制,需协同使用才真正“轻量”










