在 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
參考資料:nixCraft、鳥哥的 Linux 私房菜