nice 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
nice——进程管理命令族(见进程管理与调度命令族)。当你要在生产机上跑一个吃 CPU 的批处理、又不想抢前台服务资源时,nice 让它"客气点"。
nice 以指定的**调度优先级(nice 值)**启动一个程序。nice 值越大,优先级越低,系统越会优先把 CPU 让给别的进程。
一、nice 值是什么
text
nice 值范围:-20(最高优先级)~ 19(最低优先级)
普通进程默认 nice = 0越小越"霸道"(抢 CPU 能力强),越大越"客气"。注意这是相对优先级,最终能拿到多少 CPU 还取决于系统整体负载和其他进程的 nice 值。
二、基本用法
bash
nice make -j8 # 以默认 +10 的低优先级跑编译
nice -n 15 tar czf big.tgz /data # -n 显式指定 nice 值为 15(更客气)
nice -n -5 critical_job # 提高优先级(需 root,普通用户只能往大了调)不带
-n时默认加 10(即降低优先级)。普通用户只能把 nice 调大(降低优先级),不能调小——想让程序更优先必须 root。这点常被踩。
三、查看 nice 值
bash
ps -o pid,ni,comm -p $(pidof tar) # NI 列就是 nice 值
top -p $(pidof tar) # 看 NI 列用
ps -o ni或 top 的NI列能看到某个进程的当前 nice 值,确认你的 nice 设置确实生效了。
四、nice vs renice
| 命令 | 作用对象 |
|---|---|
nice | 启动新进程时设定优先级 |
| renice | 修改已在运行进程的优先级(见renice 命令详解) |
进程已经跑起来了才想调优先级,用 renice;还没启动、想一开始就客气,用 nice。两者一个管"生"一个管"改"。
五、实战:后台批处理不抢资源
bash
# 在负载高的机器上跑大规模转码,避免拖慢线上服务
nice -n 19 ffmpeg -i in.mp4 out.mp4 &一句话总结
nice = 启动新进程时设定优先级:-n 设 nice 值(范围 -20~19,越大越客气),普通用户只能调低不能调高(需 root 提优先级);常用来让批处理不抢线上 CPU。改已运行进程的优先级用 renice。