nice命令用于启动新进程时指定其nice值(-20至19),数值越小优先级越高;普通用户仅能设0–19,root才可设负值;需用ps或top(启用NI列)验证生效,且nice仅影响CPU调度,I/O密集型任务应配合ionice使用。

直接在命令前加 nice -n N 即可为新启动的进程指定谦让度(nice 值),N 的取值范围是 -20 到 19。数值越小,进程越“霸道”,抢占 CPU 越积极;数值越大,越“谦让”,越愿意让出 CPU 时间。
普通用户能设哪些值
普通用户只能设 0~19 的 nice 值,不能设负数。例如:
- nice -n 5 long_task.sh —— 合法,以 nice=5 启动
- nice long_task.sh —— 默认等价于 nice -n 10,即 nice=10
- nice -n -5 long_task.sh —— 报错 Permission denied,普通用户无权提高优先级
需要提权才能设负值
只有 root 或具备 CAP_SYS_NICE 能力的进程才能设 -20 到 -1 的值。必须加 sudo:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- sudo nice -n -10 ./monitor —— 关键监控服务用更高优先级保障响应
- sudo nice -n -20 stress --cpu 4 —— 压测时抢占更多 CPU
注意:多数日常任务不需要负 nice 值,误设反而可能挤占系统关键进程资源。
验证是否生效
nice 只对它启动的新进程有效,且不会立即反映在 top 默认视图中:
- 运行 ps -o pid,ni,comm -p $(pgrep -f "long_task.sh") 直接查看 ni 字段
- 在 top 中按 f → 方向键选中 NI → 空格启用 → q 退出,才能看到 NI 列
- 若发现没变化,可能是 systemd 或容器已预先设置了 nice,手动覆盖会被忽略
配合 ionice 处理 I/O 密集型任务
nice 只影响 CPU 调度,对磁盘读写无约束。例如日志压缩、数据库备份这类任务:
- 单用 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

















