Гид по технологиям

nice и renice: приоритеты процессов в Linux

4 min read Linux Обновлено 13 Dec 2025
nice и renice: управляем приоритетами процессов
nice и renice: управляем приоритетами процессов

Рука человека, смотрящего на наручные часы

Linux позволяет запускать множество процессов одновременно. Иногда тяжёлый процесс замедляет систему. Вместо того чтобы завершать его, можно «перенести на задний план» — понизить ему приоритет. Для этого в Unix-подобных системах есть утилита nice.

Что такое nice и как он работает

Nice — это утилита для управления приоритетом CPU-планирования процесса. В GNU-реализации диапазон nice-чисел от -20 (максимальный приоритет) до 19 (минимальный приоритет). Чем больше число, тем менее «жадный» к CPU процесс.

Определения в одну строку:

  • nice-число (NI): целое значение приоритета процесса, видимое в столбце NI в top/htop.
  • PID: идентификатор процесса (Process ID).

Важно: nice влияет только на планирование CPU. Он не ограничивает использование диска, сети или памяти.

Где увидеть nice-число

В утилитах мониторинга NI отображает текущее nice-число процесса:

Вывод htop с колонкой NI, показывающей nice-число

Запуск процесса с пониженным приоритетом

По умолчанию процессы, запускаемые «обычно», имеют nice 0. Если вы хотите запустить процесс с более низким приоритетом, используйте nice.

Простейшая команда:

which nice

Проверка того, какая версия есть в системе (GNU или встроенная в оболочку). Пример запуска с дефолтным понижением (обычно nice=10):

nice processname

Где processname — команда или скрипт. Для явной установки нужного nice-числа используйте -n:

nice -n 19 processname

Здесь 19 — наименьший приоритет (процесс будет «вежливо» ждать свободного CPU).

Примечание

Если вы запускаете GUI-приложение, будьте осторожны: понижение приоритета может сделать интерфейс менее отзывчивым, если сам GUI-процесс подвергнется изменениям.

Изменение приоритета у уже запущенного процесса: renice

Страница man для renice

Если процесс уже работает, используйте renice. Сначала найдите PID через ps, top или htop, затем выполните команду:

renice priority PID

Где priority — желаемое nice-число. Альтернативно, флаг -n задаёт смещение (инкремент):

sudo renice -n -2 PID

Эта команда уменьшит nice-число на 2, то есть повысит приоритет процесса. Заметьте, повышать приоритет (уменьшать число) для чужих процессов может только root.

Для изменения приоритетов всех процессов пользователя используйте -u:

renice priority -u username

Или с sudo для пользователя:

sudo renice -n 5 -u alice

Когда nice/renice не помогут (контрпример)

  • Процесс узко зависит от диска (I/O-bound). В этом случае он ждёт ввода-вывода, и пониженный nice не ускорит другую работу. Для таких задач лучше ionice или настройка I/O-квот.
  • Если в вашей системе один пользователь запускает несколько тяжёлых задач и они все в одинаковом nice — общий эффект минимален.
  • Для лимитов ресурсов, безопасности и обеспечения QoS на уровне сервисов лучше использовать cgroups или systemd slices.

Альтернативные подходы и дополнения

  • ionice — управление приоритетом операций ввода-вывода.
  • cgroups (control groups) — жёсткие лимиты CPU, памяти и I/O для наборов процессов.
  • systemd slices — декларативное ограничение ресурсов для сервисов systemd.
  • cpulimit — ограничивает процент CPU, который может использовать процесс.
  • taskset — фиксирует процесс на наборе CPU (affinity).

Выбор зависит от цели: плавность интерфейса, ограничение фоновых задач или строгие квоты для контейнеров.

Шпаргалка: полезные команды

# проверить путь до утилиты nice
which nice

# запустить команду с дефолтным понижением (обычно nice=10)
nice long-running-command

# установить конкретное nice-число
nice -n 19 long-running-command

# найти PID процесса по имени
ps aux | grep processname

# изменить nice-число по PID
renice 10 12345

# изменить на относительное значение (потребуется sudo для повышения)
sudo renice -n -2 12345

# изменить приоритет для всех процессов пользователя
renice 5 -u username

# посмотреть процессы и столбец NI
top
htop

SOP: как понизить приоритет длительной фоновой задачи (короткий план)

  1. Найдите команду, которую нужно «осадить». Если она ещё не запущена — перезапустите через nice.
  2. Для нового процесса: run -> nice -n 19 process.
  3. Для уже запущенного: найдите PID (ps/top/htop) и выполните renice с sudo при необходимости.
  4. Проверяйте NI в htop или top.
  5. Если проблема — I/O, примените ionice или cgroups.

Важно: документируйте изменения, если меняете приоритеты для процессов в продакшене.

Безопасность и права

  • Только superuser может повысить приоритет (уменьшить nice-число) чужого процесса.
  • Не доверяйте случайным скриптам, которые изменяют приоритеты системных процессов.
  • В многопользовательской среде согласуйте изменение приоритетов с политиками группы.

Критерии приёмки

  • Процесс запущен с нужным nice-числом (проверено в NI).
  • Общая отзывчивость системы не ухудшилась.
  • Изменения задокументированы и, при необходимости, выполнены с sudo.

Быстрый факт-бокс

  • Диапазон nice (GNU): -20 … 19
  • По умолчанию при запуске через nice чаще всего используется nice=10
  • Только root может уменьшать значение nice (< 0) для чужих процессов

Краткое резюме

Используйте nice для «вежливого» фонового выполнения долгих задач и renice, чтобы подправить приоритет уже работающих процессов. Для ограничений ввода-вывода или жёстких квот применяйте ionice и cgroups. Всегда учитывайте, что nice влияет только на планирование CPU.

Итог: nice/renice — простые и эффективные инструменты для улучшения общей отзывчивости системы при одновременной работе тяжёлых задач.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как сэкономить на Audible — проверенные способы
Аудиокниги

Как сэкономить на Audible — проверенные способы

Как включить макросы в Excel — безопасно
Excel

Как включить макросы в Excel — безопасно

Плавающее видео в Edge на iPhone и iPad
Руководство

Плавающее видео в Edge на iPhone и iPad

Отключить Antimalware Service Executable в Windows
Windows

Отключить Antimalware Service Executable в Windows

Изменение размера значков в Windows 10
Windows

Изменение размера значков в Windows 10

KMS‑сервер: ошибка подключения — быстрые решения
Техподдержка

KMS‑сервер: ошибка подключения — быстрые решения