設定進程的優先順序:nice、renice
系統中啟動並執行每個進程都有一個優先順序(亦稱“nice 值”),其範圍從 -20 (最高優先順序)到 19 (最低優先順序)。預設情況下,進程的優先順序是 0 (“基本”調度優先順序)。優先順序比較大的進程(nice 值比較小,最低到 -20)相對優先順序比較小的進程(直到 19)將比較頻繁地被調度運行,因此就擁有更多的進程周期。一般使用者只能降低它們自己進程的優先順序別,並限於 0 到 19 之間。超級使用者(root)可以將任何進程的優先順序設定為任何值。
renice
如果某個或某些進程消耗了過多的系統資源,除了終止它們,您還可以更改它們的優先順序。為此,請使用 renice 命令。其文法為:
renice 優先順序 [[-p] pid ...] [[-g] pgrp ...] [[-u] 使用者名稱 ...] |
其中,優先順序是指優先順序的值;pid (對多個進程請使用 -p 選項)表示進程 識別碼;pgrp (如果有多個,請用 -g)表示進程組 識別碼;而使用者(如果不只一個,請用 -u)表示進程所有者的使用者名稱。
假定您運行了一個執行長時間科學運算的進程(其 PID 為 785),但是您又想要玩一個遊戲而想要釋放一些系統資源。那麼您可以:
這樣,您的那個進程可能需要花費更長一些時間完成,不過它就不會從其他進程手裡搶走 CPU 時間片。
如果您是系統管理員,而且您發覺某些使用者執行了過多的進程並消耗了過多的系統資源時,您只需鍵入一個命令就可以改變這些使用者進程的優先順序:
這樣,li_si 的所有進程都將擁有最低優先順序,因而就不會阻礙其他使用者的進程了。
nice
既然您已經瞭解可以更改進程的優先順序,您可能需要按照指定的優先順序執行命令。為此,請使用 nice 命令。
此時,您需要把您要啟動並執行命令作為 nice 的一個參數。而其另一個參數 -n 可用來設定優先權別。預設情況下 nice 將設定優先權為 10。
比如,您想要建立一張 Mandrakelinux 安裝 CD-ROM 的 ISO 映像:
$ dd if=/dev/cdrom of=~/mdk1.iso |
在某些裝配標準 IDE CD-ROM 的系統上,複製大量資訊的進程將消耗過多系統資源。要避免複製操作阻礙其他進程,您可以用如下命令在一個比較低的優先順序上啟動該進程:
$ nice -n 19 dd if=/dev/cdrom of=~/mdk1.iso |
然後就可以繼續工作了。