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

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

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

nice 命令

nice - run a program with modified scheduling priority

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

格式及用法:

nice  [options]  [command [args]]

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

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

 

案例:

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

 

 

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章