温馨提示×

linux进程怎么优先级

小樊
48
2026-09-27 17:41:20
栏目: 智能运维

在 Linux 中,进程优先级主要用于决定 CPU 调度时谁更“优先”被运行。下面从概念、查看、设置、实际示例几个角度说明。


一、Linux 进程优先级的两种概念

1️⃣ Nice 值(用户层优先级)

  • 范围:-20(最高优先级)~ 19(最低优先级)
  • 默认值:0
  • 普通用户:
    • 只能 降低优先级(增大 nice)
    • 不能提高优先级(减小 nice)
  • root 用户可以设置任意 nice 值

nice 值越大 → 优先级越低


2️⃣ Priority(内核调度优先级,PRI)

  • 由内核维护
  • 用户一般不直接设置
  • 可通过 ps 查看
  • 关系:
PRI = 20 + nice

二、查看进程优先级

1️⃣ 使用 ps

ps -l

示例输出:

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000  1234  1230  0  80   0 -  2100 wait   pts/0    00:00:00 bash
  • PRI:优先级(80)
  • NI:nice 值(0)

2️⃣ 使用 top

top
  • 按 f → 选 NI、PR
  • 实时查看

三、设置进程优先级

✅ 方法一:启动时就设置(nice)

nice -n 10 ./my_program
  • 以 nice = 10 启动
nice -n -5 ./my_program
  • 需要 root

✅ 方法二:运行中调整(renice)

renice -n 5 -p 1234
  • 把 PID 1234 的 nice 改为 5
renice -n -10 -p 1234
  • root 才能降低 nice

✅ 方法三:top 中调整

  1. 运行 top
  2. 按 r
  3. 输入 PID
  4. 输入 nice 值

四、Shell 作业控制

sleep 100 &
[1] 2345

renice -n 10 -p 2345

或:

nice sleep 100 &

五、实时进程优先级(RT 进程)

Linux 还支持 实时调度(不靠 nice):

调度策略

  • SCHED_FIFO
  • SCHED_RR

设置方式

chrt -f 50 ./rt_program

查看:

chrt -p 1234

⚠️ 实时进程优先级 高于所有普通进程,滥用会导致系统卡死


六、常见误区

❌ nice 能“加速”程序
✅ 只能“少抢 CPU”或“多抢 CPU”

❌ 高 nice = 高优先级
✅ 相反


七、总结一句话

普通程序调优先级用 nice / renice,内核和实时任务才用 chrt

如果你有具体场景(比如:

  • 服务器降权
  • CPU 密集型任务
  • 实时控制程序

可以告诉我,我可以给你更合适的建议。

0 踩