Linux之進程管理(2)相關命令之四

Linux之進程管理(2)相關命令之四vim

設置或調整進程優先級命令: nice  rnicebash

nice 命令ide

nice - run a program with modified scheduling priorityoop

運行一個程序時修改調度其進程優先級測試

格式及用法:spa

nice  [options]  [command [args]]隊列

    -n  # #表示要設置此程序nice值,-2019,值越下,優先級越高進程

注:-2019的每一個nice值分別對應(Centos5中爲100-139CentOS6中爲0-3940個優先級值,而優先級值越高,nice值越小,對應的進程就越優先運行,且佔用更多的CPU運行資源空間。固然,還有實時優先級,也就是當優先級相同時,還會經過實時優先級來比較,實時優先級值爲99-0,其中值越大,對應的優先級越高。內存

 

案例:hadoop

#pts/0終端中打開一個nice值爲20vim進程

[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,及PID46906的進程的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值爲19nice值越大,優先級值越小。

 

測試普通用戶只能調大本身進程的nice

#切換到普通用戶

[root@localhost ~]# su - hadoop
Last login: Wed Sep  7 21:47:06 EDT 2016 on pts/2

#開啓nice值爲10vim進程

[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資源空間。

相關文章
相關標籤/搜索