Linux之進程管理(2)相關命令之四vim
設置或調整進程優先級命令: nice rnicebash
nice 命令ide
nice - run a program with modified scheduling priorityoop
運行一個程序時修改調度其進程優先級測試
格式及用法:spa
nice [options] [command [args]]隊列
-n # :#表示要設置此程序nice值,-20到19,值越下,優先級越高進程
注:-20到19的每一個nice值分別對應(Centos5中爲100-139,CentOS6中爲0-39)40個優先級值,而優先級值越高,nice值越小,對應的進程就越優先運行,且佔用更多的CPU運行資源空間。固然,還有實時優先級,也就是當優先級相同時,還會經過實時優先級來比較,實時優先級值爲99-0,其中值越大,對應的優先級越高。內存
案例:hadoop
#在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資源空間。