nice:调整程序运行时的优先级

       nice命令是一个当程序启动时,修改程序运行优先级的命令。
  Linux的优先级范围是从-20(最大优先级)到19(最小优先级)。优先级越高的程序占用CPU的次数越多,反之亦然。

nice命令的参数选项及说明

-n num设置    nice增加的数值,num取值从-20~19。不使用n选项相当于-n 10 的效果
              说明:
              ①root用户可随意调整自己或他人程序的nice值,且范围为-20~19
              ②普通用户仅可调整自己程序的nice值,且范围仅为0~19(避免普通用户抢占系统资源)
              ③普通用户仅可将nice值往高调,例如nice值原本为5,则未来仅能调整到大于5的值
 

使用范例

 
单独使用nice命令
[root@cs6 ~]# nice    #<=命令不接任何内容时,显示出当前系统默认的程序运行优先级为0。
0
 
默认增加优先级10
[root@cs6 ~]# nice nice
10
 
    其中,第1个nice命令以默认值10来调整第2个nice命令运行的优先级,即在系统默认的程序运行优先级0的基础之上增加10,得到新的程序运行优先级10,然后以优先级10来运行第2个nice命令,最后第2个nice命令显示当前程序运行的优先级为10。
 
[root@cs6 ~]# nice nice nice
19
 
    其中,第1个nice命令以默认值10来调整第2个nice命令运行的优先级,即在系统默认的程序运行优先级0的基础之上增加10,得到新的程序运行优先级10,然后以优先级10来运行第2个nice命令,随后第2个nice命令又以默认值10来调整第3个nice命令运行的优先级,即在第2个nice命令运行优先级的基础之上再增加10,得到新的程序运行优先级20,但20大于最小程序运行优先级19,所以最终是以优先级19来运行第3个nice命令,最后第3个nice命令显示当前程序运行的优先级为19。
 

查看进程优先级

[root@cs6 ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1492 1488 0 80 0 - 27079 do_wai pts/0 00:00:00 bash
4 R 0 1703 1492 0 80 0 - 27033 - pts/0 00:00:00 ps
前面已经学过ps命令了,这里使用ps-1查看进程的优先级。
在上面的输出结果中,需要重点关注以下两列。
  PRI:代表这个进程的优先级,通俗点说就是进程被CPU执行的先后顺序,此值越小进程的优先级别就越高,就能越早执行。
       NI:代表这个进程的nice值,表示进程可被执行的优先级的修正数值,在加入nice值后,将会使得PRI变为:PRI(new)=80(PRI初始默认值)+nice。这样一来,如果nice值为负值,那么该进程的优先级值将变小,即其优先级会变高,也表示其越快被执行。
  NI是优先值,是用户层面的概念,PR是进程的实际优先级,是给内核(kemel)看(用)的。
  进程的nice值不是进程的优先级,它们不是一个概念,但是进程的nice值会影响到进程的优先级变化。

测试PRI和NI的关系

[root@cs6 ~]# vim test1 & #<=通过这个后台任务创建一个进程。
[1] 1704
[root@cs6 ~]# ls
fav.jpg lewen.log lewen.nc test.txt web.sh [1]+ Stopped vim test1
[root@cs6 ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1492 1488 0 80 0 - 27079 do_wai pts/0 00:00:00 bash
0 T 0 1704 1492 0 80 0 - 34223 do_sig pts/0 00:00:00 vim
4 R 0 1706 1492 0 80 0 - 27035 - pts/0 00:00:00 ps
在上面的命令中,默认情况下,NI的值都为0,PRI的值都为80。
现在使用nice命令调整一下进程的优先级。
 
[root@cs6 ~]# nice -n -10 vim test2 &  #<=使用nice调整为-10。
[2] 1707
[root@cs6 ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1492 1488 0 80 0 - 27079 do_wai pts/0 00:00:00 bash
0 T 0 1704 1492 0 80 0 - 34223 do_sig pts/0 00:00:00 vim
4 T 0 1707 1492 0 70 -10 - 34223 do_sig pts/0 00:00:00 vim
4 R 0 1708 1492 0 80 0 - 27033 - pts/0 00:00:00 ps [2]+ Stopped nice -n -10 vim test2

经过nice命令调整,可以发现NI列变为-10,而PRI列变化为70=80+(-10)。

renice:调整运行中的进程的优先级

    nice命令常用于修改未运行的程序运行时的优先级,但是对于正在运行的进程,若想要修改其优先级,就需要用到renice命令。
    在系统运行中,有时会发现某个不是很重要的进程占用了太多的CPU资源,因此会希望限制这个进程或者是希望某个进程优先运行。这些都是renice命令的使用场景。
 

renice 命令的参数

-n num    设置nice增加的数值,num取值范图从-20~19
-g        修改指定用户组的进程的优先级
-u        修改指定用户的进程的优先级
-p        修改指定pid的进程的优先级
 
[root@cs6 ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1492 1488 0 80 0 - 27079 do_wai pts/0 00:00:00 bash
0 T 0 1704 1492 0 80 0 - 34223 do_sig pts/0 00:00:00 vim
4 T 0 1707 1492 0 70 -10 - 34223 do_sig pts/0 00:00:00 vim
4 R 0 1719 1492 0 80 0 - 27033 - pts/0 00:00:00 ps
[root@cs6 ~]# renice -n 5 -p 1707 #<==使用renice的一p参数指定值为1707的进程,将其NI值调整为5。
1707: old priority -10, new priority 5
[root@cs6 ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1492 1488 0 80 0 - 27079 do_wai pts/0 00:00:00 bash
0 T 0 1704 1492 0 80 0 - 34223 do_sig pts/0 00:00:00 vim
4 T 0 1707 1492 0 85 5 - 34223 do_sig pts/0 00:00:00 vim
4 R 0 1726 1492 0 80 0 - 27033 - pts/0 00:00:00 ps

通过测试可以发现,PRI值并不是在上一次的基础上进行变化,而是一直在初始默认值80这个值之上变动。

 
 
 

9.8-9 nice & renice的更多相关文章

  1. A quick renice command rescheduled the upgrade to a lower priority and I was back to surfing in no time.

    https://www.nixtutor.com/linux/changing-priority-on-linux-processes/ Changing Priority on Linux Proc ...

  2. Linux下nice/renice命令小结

    1. nice命令 内核根据进程的nice值决定进程需要多少处理器时间. nice值的取值范围是是: -20到20. 一个具有-20 的 nice 值的进程有很高的优先级. 一个 nice 值为 20 ...

  3. 在top命令下kill和renice进程

    For common process management tasks, top is so great because it gives an overview of the most active ...

  4. chfn,chsh,last,login,mail ,mesg ,talk,wall,write,nice ,pstree ,renice,skill ,expr ,reset,tset,compress ,lpd ,lpq ,lpr ,lprm,fdformat ,mformat ,mkdosf

    名称:chfn 使用权限:所有使用者 用法:shell>> chfn 说明:提供使用者更改个人资讯,用于finger and mail username 范例: shell>> ...

  5. 运维ps语法---》ps、pstree、top、htop、nice、renice、kill、ulimit、w 和 who 和 whoami、pgrep、fg 和 bg、ipcs

    Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...

  6. 自学Linux Shell15.2-作业控制命令(jobs/bg/nice/renice/at/atp/atrm/crontab)

    点击返回 自学Linux命令行与Shell脚本之路 15.1-作业控制命令(jobs/bg/nice/renice/at/atp/atrm/crontab) 1  控制作业 1.1查看作业 (jobs ...

  7. Linux基础命令---调整程序优先级renice

    renice renice指令可以重新调整程序运行的优先级,可以通过进程id.用户id.组id来修改优先级.修改组的等级,影响组内所有用户的所有进程优先级:修改用户等级,影响该用户的所有进程优先级.除 ...

  8. linux进程cpu资源分配命令nice,renice,taskset

    进程cpu资源分配就是指进程的优先权(priority).优先权高的进程有优先执行权利.配置进程优先权对多任务环境的linux很有用,可以改善系统性能.还可以把进程运行到指定的CPU上,这样一来,把不 ...

  9. nice和renice命令详解

    基础命令学习目录首页 进程调度是linux中非常重要的概念.linux内核有一套高效复杂的调度机制,能使效率极大化,但有时为了实现特定的要求,需要一定的人工干预.比如,你希望操作系统能分配更多的CPU ...

  10. nice & renice

    [nice & renice & getpriority & setpriority] 1.nice & renice 参考:http://man.ddvip.com/ ...

随机推荐

  1. Java(100-113)【类与对象、封装、构造方法】

    1.对象的创建以及使用 Student stu =new Student(); 根据一个类创建一个对象 导包.创建.使用 2.手机练习 有main才能run Phone.java package cn ...

  2. 在Visual Studio 中使用git——什么是Git(一)

    写程序必然需要版本控制,哪怕是个人项目也是必须的,微软从Visual Studio 2019开始默认提供了对Git的支持,Visual Studio 2019之前的版本可以安装相应的插件来实现Git功 ...

  3. .Net程序内存泄漏解析

    一.概要 大概在今年三月份的时候突然被紧急调到另外一个项目组解决线上内存泄漏问题.经过两周的玩命奋战终于解决了这个问题这里把心路历程及思路分享给大家.希望可以帮助到各位或现在正遇到这样事情的小伙伴提供 ...

  4. Apache HTTP Server与Tomcat整合学习记录

    Apache HTTP Server与Tomcat整合 个人环境:Windows10,JDK8,Tomcat8.5,Apache2.4,JK模块1.2.4 前言 ​ 其实网上有很多教程,但问题是得每次 ...

  5. 所谓 ICMP,不过将军与士卒而已

    什么是 ICMP 协议 关于这点我们在 IP 协议那篇文章中提过一嘴,IP 协议作为一种提供不可靠数据交付的网络层协议,在传输的过程中,其 IP 数据报可能会发生丢失.重复.延迟和乱序等各种情况, 但 ...

  6. 2021S软件工程——结对项目第三阶段

    2021S软件工程--结对项目第三阶段 2021春季软件工程(罗杰 任健) 项目地址 1020 1169 1 实践反思 1.1 问题分析 两人习惯不一致 没有具体制定时间节点 写完代码才开始" ...

  7. go gin框架和springboot框架WEB接口性能对比

    1 简要概述 最近看起go lang,真的被go的goroutine(协程)惊艳到了,一句 go function(){#todo},即可完成一个并发的工作. 看到gin这个web框架时,突然就特别想 ...

  8. Android APK程序的smali动态调试

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/71250622 一.Apktool的下载和安装 Apktool是Android逆向分 ...

  9. android中Stub Proxy答疑

    在上篇添加账户源码解析的博文中,我们发现功能是由AccountManager的mService成员来实现.而mService其实是AccountManagerService,如果对android系统有 ...

  10. POJ1679判断最小生成树的唯一性

    题意:      判断最小树是否唯一. 思路:      我用了两种方法,主要就是好久没敲了,找个水题练练手,第一种就是先一遍最小生成树,然后枚举最小生成树上的每一条边,然后取消这条边,在跑一遍最小生 ...