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

Как управлять приоритетом процессов в Linux с помощью nice и renice

5 min read Linux Обновлено 12 Apr 2026
Управление приоритетом процессов в Linux
Управление приоритетом процессов в Linux

Человек смотрит на наручные часы, иллюстрация ожидания при фоновых задачах

Кратко

Кратко: утилиты nice и renice позволяют понизить (или изменить) приоритет процесса в Linux, чтобы долгие или тяжёлые задачи не делали систему неотзывчивой. Для точной настройки приоритетов есть альтернативы: ionice, cgroups и параметры systemd.

Что такое nice и зачем он нужен

nice — это утилита, встроенная в Linux и Unix, которая задаёт “nice number” (число вежливости) — приоритет планировщика для процесса. Она появилась в эпоху многопользовательских мини-ЭВМ и мейнфреймов, но остаётся полезной и на настольных машинах.

Определение: nice number — целое число, влияющее на приоритет процесса в планировщике. Больше значение = меньше приоритета.

Ключевые идеи:

  • Диапазон стандартной GNU-версии: от -20 (максимально высокий приоритет) до 19 (максимально низкий приоритет).
  • Отрицательные значения увеличивают приоритет процесса; положительные — уменьшают.
  • В утилитах мониторинга (top, htop) это число отображается в колонке NI.

Скриншот htop с колонкой NI, показывающей уровень

Важно: по умолчанию при запуске процесса через nice без аргументов используется значение 10. Процессы, запущенные обычным способом, имеют nice 0.

Как запускать процесс с пониженным приоритетом

Простой способ запустить процесс с пониженным приоритетом — команда:

nice processname

Замена processname на нужную команду. Пример минимального приоритета:

nice -n 19 процесс_долгой_обработки

Если нужно указать конкретное значение nice — используйте флаг -n перед числом.

Примечание: изменение приоритета в сторону повышения (меньшее число, особенно отрицательное) обычно требует прав суперпользователя.

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

Фрагмент man-страницы renice

Чтобы поменять nice у уже запущенного процесса, используется renice. Сначала найдите PID процесса (ps, top, htop), затем выполните:

renice priority PID

Где priority — целевое число nice. Если вы хотите изменить приоритет на изменение (например, уменьшить с 10 до 8), используйте флаг -n с относительным значением:

sudo renice -n -2 12345

Только суперпользователь может повышать приоритет процесса другого пользователя или устанавливать более высокий приоритет (меньшее число). Для массового изменения по пользователю:

renice priority -u username

Быстрый справочник команд

ЗадачаКомандаОписание
Запустить с дефолтным низким приоритетомnice mycommandПрисваивает nice=10 по умолчанию
Указать конкретный nicenice -n 15 mycommandУстанавливает nice=15
Поиск PIDps aux \/ top \/ htopНайти идентификатор процесса
Изменить nice по PIDsudo renice -n -5 12345Относительное изменение
Изменить всем процессам пользователяrenice 10 -u aliceУстановить nice=10 для пользователя alice

Когда nice не решит проблему (примеры провалов)

  • Задача преимущественно зависима от диска (I/O-bound). nice влияет на CPU-планировку, а не напрямую на дисковые очереди.
  • Загрузка графического процессора (GPU) не зависит от nice.
  • Реaltime-процессы с политикой SCHED_FIFO/SCHED_RR не подчиняются простым nice-правилам.
  • Системы, использующие cgroups или systemd-slice с жёсткими ограничениями, могут переопределять поведение.

Альтернативы для случаев, когда nice не эффективен:

  • ionice — для управления приоритетом ввода-вывода.
  • cpulimit — ограничивает использование CPU конкретным процентом.
  • cgroups / systemd — даёт детальный контроль над CPU, памятью и I/O.

Ментальные модели и эвристики

  • Представьте планировщик как очередь обслуживания: nice увеличивает вашу “терпеливость” процесса. Чем «вежливее» (больше nice), тем дольше процесс ждёт своей очереди.
  • Для фоновых длительных задач ставьте nice 10–19. Для интерактивных задач оставляйте 0 или отрицательное значение (только для системных служб или с sudo).

Пошаговый план (playbook) для десктоп-пользователя

  1. Определите проблемный процесс: откройте htop или top.
  2. Если задача фоновая и не требует интерактивности, поставьте nice 10–19 при запуске: nice -n 15 mytask.
  3. Для уже запущенного процесса найдите PID и выполните renice (без повышения приоритета для чужих процессов): sudo renice -n 5 PID.
  4. Проверьте реактивность системы и CPU в top/htop.
  5. Если проблема I/O — используйте ionice.

Чек-лист по ролям

  • Десктоп-пользователь:

    • Запустить тяжёлую задачу с nice 15–19.
    • Проверить responsiveness GUI.
    • При необходимости вернуть значение по умолчанию.
  • Системный администратор:

    • Использовать systemd unit с параметром Nice= при службах.
    • Применять cgroups для групповых ограничений.
    • Документировать изменения и уведомить пользователей.

Факты и числа

  • Диапазон nice (GNU): -20 — 19.
  • По умолчанию nice без аргументов даёт значение 10.
  • Процессы, запущенные обычным способом, имеют nice 0.

Пример настройки systemd

Если служба постоянно нагружает CPU, лучше задать приоритет через systemd unit:

[Service]
ExecStart=/usr/bin/mydaemon
Nice=10
CPUShares=512

После правки выполните: sudo systemctl daemon-reload && sudo systemctl restart mydaemon

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

  • CPU-занятость фоновой задачи снизилась согласно top/htop.
  • Интерактивность системы улучшилась (меньше задержек GUI или командной строки).
  • Нет необходимости повышать приоритет другим процессам вручную.

Рекомендации по безопасности и ограничения

  • Только root может понижать nice (в сторону более высокого приоритета) для чужих процессов.
  • Не повышайте приоритет системных задач без тестирования: это может нарушить баланс и привести к нестабильности.

Небольшая диаграмма выбора (decision flow)

flowchart TD
  A[Проблема: система тормозит?] --> B{Нагрузка CPU или I/O?}
  B -- CPU --> C[Использовать nice или renice]
  B -- I/O --> D[Использовать ionice или cgroups]
  C --> E{Процесс уже запущен?}
  E -- Да --> F[renice PID]
  E -- Нет --> G[nice -n N команда]
  D --> H[Настроить ionice / cgroups]

Краткая сводка

Nice и renice — простые и эффективные инструменты для управления приоритетом процессов в Linux. Они помогают сделать интерфейс более отзывчивым при запуске тяжёлых задач, но не заменяют инструменты управления I/O и ресурсоограничения для более сложных сценариев.

Важно: если задача связана с вводом-выводом или требует жёсткого контроля ресурсов, рассмотрите ionice и cgroups/systemd.

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

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

Клонирование WordPress с Duplicator
WordPress

Клонирование WordPress с Duplicator

Стриминг видео из Dropbox на любой компьютер
Технологии

Стриминг видео из Dropbox на любой компьютер

NextDNS: настройка, функции и руководство
Сеть

NextDNS: настройка, функции и руководство

Не выделяется текст в PDF — как исправить
PDF

Не выделяется текст в PDF — как исправить

Подготовка к 2025: цели, финансы и визуализация
Личное развитие

Подготовка к 2025: цели, финансы и визуализация

Evernote как личная система управления проектами
Продуктивность

Evernote как личная система управления проектами