nice和renice命令详解
基础命令学习目录首页
进程调度是linux中非常重要的概念。linux内核有一套高效复杂的调度机制,能使效率极大化,但有时为了实现特定的要求,需要一定的人工干预。比如,你希望操作系统能分配更多的CPU资源给浏览器进程,让浏览速度更快、更流畅,操作体验更好。那具体应该怎么做呢?尽管linux的进程调度算法十分复杂,但都是以进程的优先级为基础的。因此,只需要改变进程的优先级即可。
在linux中,nice
命令用于改变进程的优先级。
nice
命令?什么鬼?哪有命令直接说自己“nice”的?咋一看,这个名字确实很“nice”,只是这里的“nice”是指“niceness”,即友善度、谦让度。用于进程中,表示进程的优先级,也即进程的友善度。niceness值为负时,表示高优先级,能提前执行和获得更多的资源,对应低友善度;反之,则表示低优先级,高友善度。
nice
命令格式:nice [OPTION] [COMMAND [ARG]...]
。
当nice没有选项时,输出值表示系统进程缺省的niceness值,一般为0。
xie@xie-VirtualBox:~$ nice
0
当nice
命令中没有给出具体的niceness值时,默认为10。如nice vi
设置vi进程的niceness为10。
-n 选项
-n
选项后面跟具体的niceness值。niceness值的范围-20~19,小于-20或大于19的值分别记为-20和19。
xie@xie-VirtualBox:~$ nice -n 10 vi&
该命令设置vi进程的niceness值为10,也就是较低的优先级。
如果设置的niceness值为负,那么必须要有管理员权限。这也不难理解,当niceness为负时,意味着该进程要抢占其他进程的资源,必须要有权限才行;如果niceness为正,即表示谦让度高,这对其他进程来说是喜闻乐见的,也当然就不用权限认证了。
可以通过ps -l
查看进程的niceness值。
xie@xie-VirtualBox:~$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 1635 1634 0 80 0 - 2178 wait pts/13 00:00:00 bash 0 T 1000 1677 1635 0 90 10 - 1767 signal pts/13 00:00:00 vi 0 R 1000 1678 1635 0 80 0 - 1606 - pts/13 00:00:00 ps
NI列即表示进程的niceness值。vi进程对应的NI值正好为刚设置的10。那PRI列又是什么呢?PRI表示进程当前的总优先级,值越小表示优先级越高,由进程默认的PRI加上NI得到,即PRI(new) = PRI(old) + NI。由上程序,进程默认的PRI是80,所以加上值为10的NI后,vi进程的PRI为90。
所以,需要注意的是,NI即niceness的值只是进程优先级的一部分,不能完全决定进程的优先级,但niceness值的绝对值越大,效果越显著。
--adjustment=N 选项
--adjustment选项和-n选项的效果是一样的,在等号右边设置对应的niceness值即可。
xie@xie-VirtualBox:~$ nice --adjustment=16 vi&
[1] 1681 xie@xie-VirtualBox:~$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 1635 1634 0 80 0 - 2178 wait pts/13 00:00:00 bas 0 T 1000 1681 1635 0 96 16 - 1767 signal pts/13 00:00:00 vi 0 R 1000 1682 1635 0 80 0 - 1606 - pts/13 00:00:00 ps
注意,直接使用“-N”也可以设置niceness值。比如,nice -12 vi&
将vi的niceness值设置为12,如果是nice --12 vi&
的话,则设置niceness的值为-12。这很容易混淆,建议使用-n或--adjustment选项,不易出错。
其他选项
--help 显示帮助信息
--version 显示版本信息
renice命令
以上讨论的都是为即将运行的进程设置niceness值,而renice
用于改变正在运行的进程的niceness值。
renice
,字面意思即重新设置niceness值,进程启动时默认的niceness值为0,可以用renice更新。
renice
语法:renice
[优先等级][
-g<程序群组名称>...][
-p<程序识别码>...][-u <用户名称>...]
如:
renice -5 -p 5200 #将PID为5200的进程的niceness设为-5
renice -5 -u xie #将属于用户xie的进程的niceness设为-5
renice -5 -g group1 #将属于group1组的程序的niceness设为5
作者:Rabin_xie
链接:https://www.jianshu.com/p/fd3dec3cd393
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
命令:nice
参数:
-n ,--adjustment=N 两个参数含义相同,设置进程优先级的谦让值(修正值)为N
示例:
nice -n -10 ws_gw
设置进程ws_gw的优先级的修正值为-10
nice -19 ws_gw
已优先级19来启动ws_gw,此时-不标识负数,而表示参数指令,已19优先级来启动;
作用:
nice命令以更改过的优先序来执行程序,如果未指定程序,则会印出目前的排程优先序,内定的 adjustment 为 10,范围为 -20(最高优先序)到 19(最低优先序)。
--------也就是说要在启动时,在启动命令前加上 nice xx command才能生效;
例如: nice -10 ./aaa ../conf/aa.xml
--------./aaa ../conf/aa.xml 为正常启动命令,nice -10 即已修正值为-10来启动aaa
修正值的用法,进程真正的优先级=进程默认优先级+修正值(nice值)
PRI(real) = PRI(old) + NI
所以为负值则优先级越高,为正值优先级越低
其他说明:
top时进程信息字段的ni值即为修正值;最低为19,所以下图的20最终为19
已19优先级启动vi
已正常优先级启动vi
已修正值-10启动vi:
转载于:https://www.cnblogs.com/machangwei-8/p/10391985.html
nice和renice命令详解相关推荐
- linux renice命令,Linux操作系统的renice命令详解
Linux操作系统的基础知识并不是很难理解,熟悉掌握基础知识能更好的学习Linux.下面由学习啦小编为大家整理了Linux操作系统的知识点总结的相关知识,希望对大家有帮助! Linux操作系统的ren ...
- Linux 中的 renice 命令详解及C/C++代码实现
Linux 中的 nice 命令有助于执行具有修改的调度优先级的程序/进程. 它启动具有用户定义的调度优先级的进程. 如果我们给一个进程更高的优先级,那么内核会为这个进程分配更多的 CPU 时间. 而 ...
- linux命令优先级设置,Linux renice重新设定进程优先级命令详解
名称:renice 使用权限:所有使用者 使用方式:renice priority [[-p] pid -] [[-g] pgrp -] [[-u] user -] 说明:重新指定一个或多个行程(Pr ...
- updater-script命令详解教你写刷机脚本
updater-script命令详解,刷机脚本怎么写,这些问题都也算是安卓的入门知识了,今天就和大家讲解一下,讲解人是深度论坛的Seeyou,如果你想学习更多ROM制作安卓开发方面的知识,欢迎加入深度 ...
- 20-Linux系统进程与计划任务相关命令详解整合
系统进程与计划任务相关命令详解整合 at at命令用于在指定时间执行命令.它能够接受在当天的hh:mm(小时:分钟)式的时间指定.假如该时间已过去,那么就放在第二天执行. 也能够使用midnight( ...
- docker常用命令详解
docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...
- oracle home 命令,$ORACLE_HOMEbin目录下所有命令的使用方法及命令详解
求$ORACLE_HOME/bin目录下所有命令的使用方法及命令详解 如题. $ORACLE_HOME/bin目录下有很多命令,那我们平时用到的也不是太多,即使用到的那部分可能用法也不是完全能掌握,所 ...
- 【FFmpeg】ffmpeg命令详解(三)高级选项
ffmpeg命令详解(三)高级选项 1.-map 2.-ignore_unknown 3.-copy_unknown 4.-map_channel 5.-map_metadata 6.-map_cha ...
- 【FFmpeg】ffmpeg命令详解(二)
ffmpeg命令详解(二) 4.流选择 4.1 自动选择流 4.2 手动选择流 5.命令行选择详解 5.1 命令行选项的值说明: 5.2 流说明符 5.3 通用选项 5.4 主选项 5.5 视频相关选 ...
- 【FFmpeg】ffmpeg命令详解(一)
ffmpeg命令详解(一) 1.命令格式 2.简述 3.详细说明 3.1 过滤器 3.1.1 简单的过滤器图 3.1.2 复杂的过滤器图 3.2 流拷贝 1.命令格式 ffmpeg [global_o ...
最新文章
- 调侃 -- 刚入职时的单纯
- HTML5-WebSocket实现聊天室
- 网络爬虫:基于对象持久化实现爬虫现场快速还原
- [转载] C#面向对象设计模式纵横谈——8. Bridge桥接模式
- python下载过程中最后一步执行opencv出错怎么回事_如何修复python中opencv中的错误“QObject::moveToThread:”?...
- MONGODB 2.6.8 的一个BUG [Assertion: 13548:BufBuilder attempted to grow() to 134217728 bytes, past the ]
- ES2019 的新功能 flat()
- window server2012服务器上如何安装nginx并启动
- 越界操作导致程序崩溃的原理
- ABB 机器人DH参数
- 【开发神器】自动化测试、用 Apipost!
- 机器学习笔记 - 什么是图神经网络?
- 嵌入式程序和FW的区别
- c语言判断不是大写字母,c语言isupper()函数如何判断字符是否为大写英文字母实例...
- Linux下CAN总线通信调试记录
- 华为路由交换学习篇-路由
- Java8新特性JDK8之joining函数
- 虚拟人实时互动之基于Android驱动表情随动
- Innodb存储引擎-idb文件格式解析
- Nachos环境搭建