Linux / Unix nice 指令:調整程序優先權 完整教學
Linux / Unix nice 指令:調整程序優先權 完整教學
📅 更新日期:2026-09-22
🏷️ 分類:Linux / Unix 行程管理 系統效能
💡 指令速查卡
| 指令名稱 | nice |
|---|---|
| 指令類型 | Process Management Command(行程管理指令) |
| 適用環境 | Linux 各發行版、Unix (AIX/Solaris)、macOS |
| 常用頻率 | ★★★☆☆ |
在 Linux 與 Unix 作業系統中,nice 指令用於在啟動新程式時,設定其排程優先權(Niceness 值)。預設情況下,程式的 nice 值為 0。透過給予較高的 nice 值(例如 10 或 19,代表「對其他程式更客氣」),可以降低該程式搶佔 CPU 資源的優先順序,讓系統在執行耗時的背景任務(如大型編譯或備份)時,仍能保持前台操作的流暢度。
一、 基本語法與常用參數
nice 指令的標準語法結構如下:
nice [選項] [指令 [參數...]]
| 參數 / 選項 | 說明 | 預設值 / 必填 |
|---|---|---|
-n N 或 --adjustment=N |
將指令的 nice 值增加 N。N 的範圍通常介於 -20(最高優先)到 19(最低優先)之間。 | 預設增加 10 |
(無參數) |
單獨輸入 nice 可顯示當前 Shell 的 nice 值。 |
選填 |
-N |
舊版語法(不推薦),等同於 -n N。若要設定負值,語法會變成 --10,容易造成混淆。 |
選填 |
二、 核心功能與運作原理
在 Linux 核心中,CPU 排程器會參考行程的 NI (Niceness) 值來決定分配 CPU 時間的比例。數值越小,優先權越高;數值越大,代表該程序越「友善(Nice)」,願意把 CPU 讓給別人。
在使用 `nice` 時,需掌握以下核心規則:
- 預設值:一般指令啟動時,預設 nice 值為 0。單純使用
nice 指令(不加參數)會讓 nice 值增加 10。 - 數值範圍:從 -20(最高優先權,最不客氣)到 19(最低優先權,最客氣)。
- 權限限制:一般使用者只能提高 nice 值(即降低優先權,範圍 0~19);只有 root (超級管理員) 才能降低 nice 值(即提高優先權,甚至設定為負數)。
三、 實用指令範例
範例 1:以較低的優先權執行耗時任務(預設 +10)
當你要在背景打包大型檔案,但不希望影響正在進行的網頁伺服器服務:
# 以 nice 值 10 執行 tar 打包指令
nice tar -czf backup.tar.gz /var/log/ &
範例 2:明確指定 Nice 值 (例如設為 15)
給予程式極低的優先權,讓它只在 CPU 閒置時才有效率地運行:
# 使用 -n 參數指定加上 15 的 nice 值
nice -n 15 ./heavy_script.sh
範例 3:提高程式的執行優先權(需要 Root 權限)
如果要啟動一個關鍵的監控程式,希望它不被其他程序卡住,可以給予負數的 nice 值:
# 給予 -5 的 nice 值 (數字越小優先權越高)
sudo nice -n -5 /usr/local/bin/critical_service
四、 常見陷阱與注意事項
⚠️ 注意事項 1:nice 只能用於「新啟動」的程序
nice 是用來啟動一個新指令並同時給予特定的優先權。如果你想要更改一個「正在執行中」的行程優先權,必須改用 renice 指令配合 PID 操作。
⚠️ 注意事項 2:一般使用者沒有「變凶」的權力
一般使用者只能將 nice 值設定為大於 0 的數字(讓程式變得更 Nice,降低優先權)。如果你嘗試執行
一般使用者只能將 nice 值設定為大於 0 的數字(讓程式變得更 Nice,降低優先權)。如果你嘗試執行
nice -n -10 command,系統會報錯並拒絕(Permission denied),只有 Root 可以設定負值。
💡 小提醒:Nice 值並非絕對的 CPU 限制
設定 Nice 值只是給核心排程器的一個「建議」。如果系統當前 CPU 資源十分空閒,即使是 nice 值為 19 的程式,依然可以跑滿 100% 的 CPU;只有在多個程式互相爭搶 CPU 資源時,Nice 值的作用才會顯現。
設定 Nice 值只是給核心排程器的一個「建議」。如果系統當前 CPU 資源十分空閒,即使是 nice 值為 19 的程式,依然可以跑滿 100% 的 CPU;只有在多個程式互相爭搶 CPU 資源時,Nice 值的作用才會顯現。
五、 相關指令推薦
renice:用於調整「已經在執行中」程序的 nice 值(例如:renice -n 5 -p 1234)。top/htop:即時監控系統資源,列表中的 `NI` 欄位即代表每個程序的 nice 值。ps:列出目前的程序狀態(例如使用ps -l也可以看到 `NI` 欄位)。
六、 參考資源與官方文件
如需進一步瞭解核心排程機制與行程管理細節:
留言
張貼留言