Linux进程优先级解读

 更新时间:2025年08月06日 09:56:00   作者:₯㎕星空&繁华  
本文介绍Linux进程优先级(数字越小越高)与权限的区别,详解nice/renice命令调整优先级,涵盖竞争性、并发等概念,以优化系统资源分配与性能

1.概念

1.1基本概念

cpu资源分配的先后顺序,就是指进程的优先权(priority)。

优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。

还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。

 

Linux中优先级数字越小,优先级越高。

1.2优先级vs权限

简单的说优先级和权限的区别:

  • 优先级:已经能了,获取资源的顺序。(排队号)
  • 权限:能不能获取资源。(准考证)
对比维度优先级(Priority)权限(Permission)
定义进程获取 CPU 资源的优先顺序,决定调度优先级规定用户 / 用户组对文件 / 目录的访问、修改、执行权限
作用对象仅针对运行中的进程(Process)仅针对文件和目录(File/Directory)
核心目标优化 CPU 资源分配,提升系统响应速度和运行效率保护资源安全,防止未授权访问或操作
数值 / 标识范围- 静态优先级:nice值(-20~19,值越小优先级越高)
- 动态优先级:内核根据进程状态动态调整
- 权限标识:r(读)、w(写)、x(执行)
- 适用用户:u(所有者)、g(所属组)、o(其他用户)
常用操作命令- nice:启动进程时设置优先级(如nice -n 5 ./app)
- renice:调整已有进程优先级(如renice -10 1234)
- chrt:设置实时进程优先级
- chmod:修改权限(如chmod 755 file)
- chown:修改所有者(如chown user:group file)
- chgrp:修改所属组(如chgrp group file)
示例场景- 后台备份进程设为低优先级(避免影响前台操作)
- 实时监控进程设为高优先级(确保及时响应)
- 系统配置文件仅root可写(rw-r--r--)
- 脚本文件添加执行权限(chmod +x script.sh)
与用户身份的关系普通用户只能降低自身进程优先级(或提升至有限范围),root可任意调整权限与用户身份强关联(所有者权限 > 组权限 > 其他用户权限),root拥有权限豁免权

1.3为什么要有优先级?

进程访问的资源(尤其是 CPU)始终是有限的,而系统中同时运行的进程往往数量较多,不可避免会出现资源竞争

操作系统的调度机制虽以 “分时” 为基础,追求基本公平,但若无优先级区分,可能导致关键进程(如实时响应、系统核心任务)被非关键进程挤占资源,出现响应卡顿或延迟 ;同时,若完全 “平均分配” 资源,还可能引发 “饥饿问题”—— 某些进程因长期得不到足够调度而陷入停滞。

2.查看系统进程

2.1PRI和RI

  • 老规矩:先写个简单的进程代码: 
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
       	
	printf("I am a process!  pid=%d\n",getpid());

	return 0;

}
ps -al

  

PRI代表这个进程可被执行的优先级,其值越小越早被执行
NI

进程优先级的修正数据,nice 值,nice其取值范围是-20至19,一共40个级别。

新的优先级 = 优先级(默认80) + nice,

这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被

执行,所以调整进程优先级,在Linux下,就是调整进程nice值。

2.2PRI vs NI

需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。

可以理解nice值是进程优先级的修正修正数据

3.修改进程优先级的命令

3.1用top命令更改已存在进程的nice

  • 输入top
  • 进入top后按“r”–>输入进程PID–>输入nice

PRI 为99=进程默认值80 +nice值19 ,之前介绍 nice其取值范围是-2019,即使我们输入了100,nice值还是19,是为了防止调度出现问题,把优先级控制在可控范围内。

  • 再次修改nice值会失败,进程优先级不能经常修改

  • 可以使用root修改 

  • 我们

结果变成了70,说明进程优先级是= 进程默认值+nice值 

3.2nice 命令

nice 命令用于在启动进程时设置其优先级。其原理是通过指定nice值(也叫NI值)来调整进程的基本优先级(PRI) ,新的优先级计算公式为:新的优先级 = 基本优先级 + nice 值

nice值的范围是 - 20 到 19,数值越小,进程的优先级越高,也就意味着该进程在争夺 CPU 资源时更具优势,能获得更多的 CPU 时间片。但普通用户只能设置 nice 值为 0 到 19,只有 root 用户可以设置为 - 20 到 19 的任意值。

  • 语法格式
nice [ -n <nice值> ] <命令> [<命令参数>]
  • 示例:
sudo nice -n -10 ./myprocess

3.3renice 命令

renice命令用于修改已经在运行中的进程的优先级。在系统运行过程中,你可能发现某个进程占用资源过多影响了其他关键进程,或者某个后台进程优先级太低执行过慢,这时就可以使用 renice 来动态调整其优先级。

  • 语法格式: 
renice [ -n <nice值> ] <进程PID>
# 对指定用户启动的所有进程调整优先级
renice [ -n <nice值> ] -u <用户名>
  • 示例: 
renice 10 2873999

4.其他概念

术语含义说明
竞争性系统进程数目众多,而 CPU 资源有限(甚至仅有 1 个),因此进程之间存在资源竞争。为实现高效任务处理和合理资源竞争,引入了优先级机制。
独立性多进程运行时需独享各类资源,进程间运行过程互不干扰。
并行多个进程在多个 CPU 上分别同时运行,称为并行。
并发多个进程在单个 CPU 上通过进程切换的方式,在一段时间内使多个进程均得以推进,称为并发。

5.总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Centos7服务器下启动jar包项目的最佳方法

    Centos7服务器下启动jar包项目的最佳方法

    这篇文章主要给大家分享介绍了关于Centos7服务器下启动jar包项目的最佳方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • apache中使用mod_gnutls模块实现多个SSL站点配置(多个HTTPS协议的虚拟主机)

    apache中使用mod_gnutls模块实现多个SSL站点配置(多个HTTPS协议的虚拟主机)

    这篇文章主要介绍了apache中使用mod_gnutls模块实现多个SSL站点配置,也就是多个HTTPS协议的虚拟主机配置方法,需要的朋友可以参考下
    2014-06-06
  • 在Linux系统中高效查找文件所在位置的方法

    在Linux系统中高效查找文件所在位置的方法

    Linux操作系统以其强大的功能和灵活性而闻名,其文件系统结构也是其强大功能的一部分,在Linux中,文件和目录以树状结构组织,这使得查找特定文件或目录变得至关重要,本文将介绍几种在Linux中查找文件所在位置的方法,从而提高工作效率,需要的朋友可以参考下
    2024-11-11
  • Linux 服务器本地部署 DeepSeek-R1 大模型并在远端Web-UI访问保姆级教程

    Linux 服务器本地部署 DeepSeek-R1 大模型并在远端Web-UI访问保姆级教

    本文详细介绍了在Linux服务器上部署DeepSeek模型的步骤,包括安装Ollama、下载模型、配置Web-UI服务以及使用Chatbox进行远程访问,感兴趣的朋友一起看看吧
    2025-02-02
  • Linux基于SSH的加密传输文件的五种操作技巧

    Linux基于SSH的加密传输文件的五种操作技巧

    还在用U盘倒腾文件?或者忍受着FTP的不安全传输?作为Linux老司机,你必须掌握这些基于SSH的加密文件传输技巧!本文将揭秘5种既安全又高效的传输方案,从简单的单文件秒传到复杂的目录实时同步,需要的朋友可以参考下
    2025-06-06
  • 在CentOS 8上安装htop的教程

    在CentOS 8上安装htop的教程

    这篇文章主要介绍如何在CentOS 8上安装htop以及如何使用该命令检索系统统计信息。本文通过图文实例详解的形式给大家展示的非常详细,需要的朋友参考下
    2019-11-11
  • CentOS 6.2 下升级安装为MySQL 5.5的方法

    CentOS 6.2 下升级安装为MySQL 5.5的方法

    使用系统CentOS 6.2本来已经系统自带安装了mysql 5.1,但是奈何5.1不支持utf8mb4字符集,只能想办法将Mysql升级到5.5
    2014-11-11
  • Linux云服务器挂载新磁盘的方法步骤

    Linux云服务器挂载新磁盘的方法步骤

    这篇文章主要介绍了Linux云服务器挂载新磁盘的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 如何监控 Linux 服务器状态的方法

    如何监控 Linux 服务器状态的方法

    这篇文章主要介绍了如何监控 Linux 服务器状态的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Linux SSD磁盘的优化配置指南

    Linux SSD磁盘的优化配置指南

    在现代 Linux 系统中,固态硬盘(SSD)已经成为主流存储设备,相比传统机械硬盘(HDD),SSD 具有更快的读写速度、更低的延迟和更高的 IOPS,本文将深入探讨如何在 Linux 环境下对 SSD 进行全面优化,需要的朋友可以参考下
    2026-04-04

最新评论