nice命令用于调整进程CPU优先级,取值-20至19,数值越小越抢占CPU,普通用户仅能设0–19;需配合ps或top验证生效,磁盘密集型任务应联合ionice使用。

直接在命令前加 nice -n N 即可,N 是 -20 到 19 的整数。数值越小,进程越“抢 CPU”;越大则越“让资源”。普通用户只能设 0–19,负值需 root 权限。
基本用法:启动时指定 nice 值
语法统一为:nice -n N command [args]。不写 -n 也能用,但推荐显式写出,避免歧义。
-
nice -n 5 tar -cf archive.tar /home:以 nice=5 启动归档任务,降低其 CPU 竞争力 -
nice -n 19 rsync -a /src/ /dst/:设为最低优先级,几乎不干扰前台服务 -
nice rsync -a /src/ /dst/:等价于nice -n 10,这是普通用户的默认谦让度
权限限制与提权方式
普通用户无法提高优先级(即设负值),尝试会报 Permission denied。只有 root 或具备 CAP_SYS_NICE 能力的进程才能使用 -20 至 -1。
- 错误示例:
nice -n -3 sleep 10→ 拒绝执行 - 正确做法:
sudo nice -n -10 ./realtime-collector - 注意:除非是关键监控、实时响应类任务,否则不建议随意设负值,可能挤压系统守护进程资源
验证是否生效
nice 只作用于它新启动的子进程,且默认工具不直接显示结果,需主动查。
- 查单个进程:
ps -o pid,ni,comm -p $(pgrep -f "rsync"),看ni字段是否为预期值 - 在
top中启用 NI 列:运行top→ 按f→ 方向键选中NI→ 空格启用 →q退出 - 若发现没变化,可能是 systemd 或容器已预设了 nice 值,手动覆盖会被忽略
配合 ionice 处理磁盘密集型任务
nice 只管 CPU,不管磁盘 I/O。对备份、压缩、日志扫描这类任务,单靠 nice 效果有限。
- 错误做法:
nice -n 15 tar -cf backup.tar /data→ CPU 让出了,但磁盘队列仍可能被占满 - 推荐组合:
nice -n 10 ionice -c 3 tar -cf backup.tar /data,其中-c 3表示 idle 类,只在磁盘空闲时工作 - 查当前 I/O 优先级:
ionice -p PID


















