Linux 的 nice 指令:指定程式執行的排程優先權(Scheduling Priority)

在 Linux 中每個執行中的程式都會有一個 niceness 值,系統的 scheduler 在對每個行程在排程時,就會參考這個數值來決定執行的先後順序,niceness 可用的數值從 -20(最高優先權)到 19(最低優先權),數值越小代表執行優先權越高。這裡介紹如何使用 nice 指令指定程式執行時的 niceness 值。

niceness 與排程優先權(scheduling priority)是不一樣的,排程優先權是真正決定程式執行的先後順序,而 niceness 值只是提供給 scheduler 參考用,scheduler 甚至可以忽略這個值。

這是 nice 指令的使用方式:
nice -n NUM COMMAND
其中 COMMAND 是要執行的程式,而 NUM 就是指定此程式在執行時的 niceness 值。以下是一些使用範例:

Example 1
若直接執行 nice 不加任何參數,則會輸出現行的 niceness 值:
nice
輸出為:
0

Example 2
指定 niceness 值為 3:
nice -n 3 command-name

Example 3
執行 nice 如果不指定 niceness,則預設會把現行的 niceness 加 10:
nice nice
輸出為:
10

Example 4
只有 root 可以指定小於 0 的 niceness 值,一般使用者無法指定小於 0 的 niceness 值。
nice -n -1 nice
輸出為:
nice: cannot set niceness: Permission denied
0

sudo nice -n -1 nice
輸出為:
-1

Example 5
如果指定超過 19 的 niceness 值,nice 會直接使用 19 做為 niceness 值。
nice -n 10000000000 nice
輸出為:
19

參考資料:
http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/
http://linux.vbird.org/linux_basic/0440processcontrol.php#nice
本站已經搬家了,欲查看最新的文章,請至 G. T. Wang 新網站