Короткий ответ
nice-значение (от -20 до 19, по умолчанию 0) влияет на вес процесса в планировщике CPU: чем ниже значение (более отрицательное), тем выше приоритет и больше доля CPU при конкуренции; renice меняет это значение для уже запущенного процесса.
Как это работает подробнее
В планировщике CFS (Completely Fair Scheduler, используемом по умолчанию на большинстве дистрибутивов) nice-значение преобразуется в вес, который определяет долю процессорного времени, выделяемую процессу относительно других процессов на той же очереди при конкуренции за CPU; это влияет только на распределение времени при нехватке CPU, а не является жёстким лимитом или гарантией.
Пример кода
commands.sh
nice -n 10 ./backup.sh
renice -n 5 -p 4321Что использовать на практике
- Практика. nice/renice полезны для фоновых пакетных задач (резервное копирование, пережатие логов), которым можно отдавать CPU по остаточному принципу, не мешая интерактивным или высокоприоритетным сервисам; для системного администратора требуется право CAP_SYS_NICE, чтобы понижать niceness (повышать приоритет) чужих процессов.
Подводные камни
- Риск. Частая ошибка — ожидать, что nice -20 гарантированно обеспечит процессу фиксированную долю CPU или защитит его от OOM killer: nice влияет только на CPU-планирование, а для контроля памяти и защиты от OOM нужны отдельные механизмы (oom_score_adj, cgroups).