首页 > 代码库 > Linux之进程管理(2)相关命令之四
Linux之进程管理(2)相关命令之四
Linux之进程管理(2)相关命令之四
设置或调整进程优先级命令: nice rnice
nice 命令
nice - run a program with modified scheduling priority
运行一个程序时修改调度其进程优先级
格式及用法:
nice [options] [command [args]]
-n # :#表示要设置此程序nice值,-20到19,值越下,优先级越高
注:-20到19的每个nice值分别对应(Centos5中为100-139,CentOS6中为0-39)40个优先级值,而优先级值越高,nice值越小,对应的进程就越优先运行,且占用更多的CPU运行资源空间。当然,还有实时优先级,也就是当优先级相同时,还会通过实时优先级来比较,实时优先级值为99-0,其中值越大,对应的优先级越高。
案例:
#在pts/0终端中打开一个nice值为20的vim进程
[root@localhost ~]# nice -n 20 vim file.txt
#切换到pts/1终端上去查看其nice值
[root@localhost ~]# ps axo pid,comm,ni | grep ‘\<vim‘ 46853 vim 19
解析:这里为什么会显示19,因为nice值规定最小为-20,最大为19,所有设置nice高于最大值或者低于最小值,系统都会认为其为默认最大值或最小值。
#打开两个后台vim进程,nice值都为-10
[root@localhost ~]# nice -n -10 vim file1 & [1] 46941
#打开第二个的时候,第一个进程被停止
[root@localhost ~]# nice -n -10 vim file2 & [2] 46942 [1]+ Stopped nice -n -10 vim file1
#此时查看jobs作业队列中信息
[root@localhost ~]# jobs [1]- Stopped nice -n -10 vim file1 [2]+ Stopped nice -n -10 vim file2
解析:+表示占用队列中。说明,此时vim在同一终端优先存储2号作业在内存的数据划分。
#查看其优先级和nice值
#两值的prioity值和nice值都一样
[root@localhost ~]# ps -C vim -o pid,comm,ni,pri PID COMMAND NI PRI 46941 vim -10 29 46942 vim -10 29
注意:这里的prioity值并不是上面说的nice值对应的40种优先级
rnice 命令
用法选项:
rnice -n prioity PID #表示对应PID进程的原prioity值+指定的prioity值=新的nice值
rnice prioity PID #表示对应PID进程的指定的prioity值-原prioity值=新的nice值
注:无论那种方式,普通用户自能调高自己进程的 nice值。
案例:
#重新设置第二个vim,及PID为46906的进程的nice
[root@localhost ~]# renice -n 20 `pgrep -f ‘^vim[[:space:]].*2‘` 46942 (process ID) old priority -10, new priority 19
解析:这里显示了一段信息,说新的nice值为19,为此进程原来的priority值(29)加上设置的nice值,及29+(-10)=19。
#再次查看两个vim进程的优先级及nice值
[root@localhost ~]# ps -C vim -o pid,cmd,comm,ni,pri PID CMD COMMAND NI PRI 46941 vim file1 vim -10 29 46942 vim file2 vim 19 0
解析:因为vim file2进程的nice值为19,nice值越大,优先级值越小。
测试普通用户只能调大自己进程的nice值
#切换到普通用户
[root@localhost ~]# su - hadoop Last login: Wed Sep 7 21:47:06 EDT 2016 on pts/2
#开启nice值为10的vim进程
[hadoop@localhost ~]$ nice -n 10 vim file1 & [1] 47037
#查在后台作业存在刚才的进程
[hadoop@localhost ~]$ jobs [1]+ Stopped nice -n 10 vim file1
#查看vim进程nice值及优先级值
[hadoop@localhost ~]$ ps axo pid,comm,ni,pri,rtprio | grep vim 47037 vim 10 9 -
#调整nice值为当前优先级+(-9),及9-9=0
[hadoop@localhost ~]$ renice -n -9 47037 renice: failed to set priority for 47037 (process ID): Permission denied
解析:进程原来nice值为10,如果设置为0就相当于提供了优先级,而作为普通用户,是无法与其他用户的进程抢占优先级的。
#那么不能调低,把自己nice值直接设置为29-10=19,提高nice值
[hadoop@localhost ~]$ renice 29 47037 47037 (process ID) old priority 10, new priority 19
解析:nice值为友好值,及只能牺牲自己进程的优先级来为其它用户的进程提供更多的CPU资源空间。
本文出自 “孟天霸-IT的垃圾回收站” 博客,谢绝转载!
Linux之进程管理(2)相关命令之四