Поиск по сайту:

Как изменить приоритет процесса в Linux

В экосистеме Unix процесс — это работающая программа. Итак, любая программа, работающая на вашем компьютере с Linux, представляет собой процесс. На вашем компьютере с Linux одновременно могут выполняться один или несколько процессов. Мы можем отобразить информацию об активных процессах с помощью команды ps. По умолчанию команда ps показывает только процессы текущего пользователя. Вы можете использовать команду «ps -ef» (разумеется, без кавычек) для отображения всех процессов. Чтобы просмотреть пользователя процесса, мы используем «ps -u». Надеюсь, вы получили базовое представление о процессах Linux. Теперь перейдем к сегодняшней теме — как изменить приоритет процесса в Linux с помощью команд nice и renice.

Как вы, возможно, знаете, по умолчанию ядро Linux считает все процессы одинаково важными и выделяет одинаковое количество процессорного времени для каждого процесса. Иногда вам может потребоваться увеличить или уменьшить приоритет определенных процессов, чтобы использовать больше процессорного времени. Здесь на помощь приходят команды nice и renice. Команда Nice используется для запуска процесса с приоритетом, определяемым пользователем, тогда как команда renice используется для изменения приоритета запущенного процесса. Обычно команды nice и renice используются для изменения приоритета процесса по сравнению с приоритетом по умолчанию.

Измените приоритет процесса с помощью команды Nice

Просмотр приоритета процесса по умолчанию

Каждый раз, когда процесс запускается нормально, он получает значение приоритета по умолчанию — ноль.

Для целей данного руководства мы используем программу cmus, медиаплеер командной строки.

Давайте запустим его с помощью команды:

cmus &

Примечание. Если команда завершается оператором управления &, оболочка выполняет команду в фоновом режиме в подоболочке.

Теперь давайте посмотрим запущенные процессы с помощью команды:

ps -al

Пример вывода:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 13829 13704 0 80 0 - 39431 signal pts/0 00:00:00 cmus
0 R 1000 13848 13704 0 80 0 - 8148 - pts/0 00:00:00 ps

Просмотр запущенных процессов с помощью команды ps

Как видно из приведенного выше вывода, значение приятности указано под заголовком столбца "NI". Итак, ясно, что все процессы получают нулевое значение приоритета по умолчанию.

Запустите процесс с помощью хорошей утилиты

Если вы запустите процесс с помощью команды nice без каких-либо аргументов, он получит значение по умолчанию 10. Здесь 10 — значение привлекательности или приоритет. Значения приятности варьируются от -20 (наиболее благоприятно для процесса) до 19 (наименее благоприятно для процесса). Проще говоря, отрицательные значения (например, -20) дают более высокий приоритет процессу, а положительные значения (например, 19) дают более низкий приоритет.

Теперь давайте остановим работающую программу cmus командой:

kill -9 13829

Здесь 13829 — это PID программы cmus. Вы увидите это значение под заголовком «PID» в приведенном выше выводе.

Теперь запустите программу cmus с «хорошей» утилитой.

nice cmus &

Проверьте запущенные процессы командой:

ps -al

Пример вывода:

 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
 0 T 1000 13957 13704 0 90 10 - 55815 signal pts/0 00:00:00 cmus
 0 R 1000 13985 13704 0 80 0 - 8148 - pts/0 00:00:00 ps

Запустите процесс с помощью хорошей утилиты

Видите ли, теперь процесс cmus получил значение по умолчанию 10, что означает, что его приоритет был изменен.

Запустите процесс с помощью хорошей утилиты с более низким приоритетом.

Кроме того, вы можете запустить тот же процесс с определенным значением вежливости, например 15, как показано ниже.

Убейте процесс с помощью команды kill:

kill -9 13957

Опять же, начните процесс со значением приятности 15:

nice -15 cmus &

Примечание. Не путайте - (дефис) с минусом. Мы используем - (дефис) для передачи значения. Следовательно, чтобы присвоить положительное значение, мы используем -15. Аналогично, чтобы присвоить отрицательное значение, мы используем --15 (т. е. двойной дефис).

Давайте проверим значение приятности с помощью команды ps -al:

ps -al

Пример вывода:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 14060 13704 0 95 15 - 55815 signal pts/0 00:00:00 cmus
0 R 1000 14069 13704 0 80 0 - 8148 - pts/0 00:00:00 ps

Запустите процесс с помощью хорошей утилиты с более низким приоритетом.

Видите, теперь процесс cmus получил значение корректности 15.

В приведенных выше примерах мы запускали процессы с более низким приоритетом. Помните, что положительное значение вежливости соответствует более низкому приоритету.

Запустите процесс с помощью утилиты Nice с более высоким приоритетом

Вы уже знаете, что отрицательное значение вежливости означает более высокий приоритет. Обратите внимание, что обычным пользователям не разрешено запускать процессы с более высоким приоритетом. Вам необходимо быть пользователем root, чтобы запустить любой процесс с более высоким приоритетом.

Итак, чтобы запустить процесс с помощью красивой утилиты с более низким приоритетом, например -15, выполните следующую команду:

nice --15 cmus &

Пример вывода:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 14331 14306 0 80 0 - 20531 poll_s pts/0 00:00:00 sudo
4 S 0 14332 14331 0 80 0 - 13796 wait pts/0 00:00:00 su
4 S 0 14333 14332 0 80 0 - 5736 wait pts/0 00:00:00 bash
4 T 0 14358 14333 0 65 -15 - 55643 signal pts/0 00:00:00 cmus
0 R 0 14366 14333 0 80 0 - 8148 - pts/0 00:00:00 ps

Запустите процесс с помощью утилиты Nice с более высоким приоритетом

Запускать процессы с опцией -n

Вы также можете использовать опцию -n, чтобы увеличить или уменьшить приоритет.

Чтобы повысить приоритет, выполните следующую команду от имени пользователя root:

nice -n -15 cmus &

Чтобы уменьшить приоритет, выполните следующую команду от имени обычного пользователя:

nice -n 15 cmus &

Измените приоритет запущенного процесса с помощью команды Renice

На данный момент мы увидели, что запустили процесс с приоритетом, определяемым пользователем. Теперь мы собираемся изменить приоритет запущенного процесса с помощью команды renice.

Давайте посмотрим запущенные процессы с помощью команды:

ps -al

Пример вывода:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 15059 14306 0 95 15 - 55815 signal pts/0 00:00:00 cmus
0 R 1000 15066 14306 0 80 0 - 8148 - pts/0 00:00:00 ps

Как вы видите в приведенном выше выводе, cmus работает с более низким значением приоритета 15.

Чтобы изменить текущее значение качества запущенного процесса, например 18, выполните следующую команду:

renice -n 18 -p 15059

Здесь 15059 — идентификатор процесса cmus.

Пример вывода будет:

15059 (process ID) old priority 15, new priority 18

Проверьте значение приятности с помощью команды:

ps -al

Пример вывода:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 15059 14306 0 98 18 - 55815 signal pts/0 00:00:00 cmus
0 R 1000 15074 14306 0 80 0 - 8148 - pts/0 00:00:00 ps

Чтобы изменить значение вежливости на отрицательное (чтобы назначить более высокий приоритет), выполните следующую команду от имени пользователя root:

renice -n -20 -p 14749

Вы даже можете изменить приоритеты всех работающих групп, принадлежащих к определенной группе, как показано ниже.

renice -n -20 -g ostechnix

Приведенная выше команда изменяет приоритет всех запущенных процессов, принадлежащих группе ostechnix.

А также вы можете изменить приоритет запуска процесса, принадлежащего конкретному пользователю, например sk, с помощью команды:

renice -n -20 -u sk

Для получения дополнительных опций я предлагаю вам обратиться к справочным страницам утилит nice и renice.

man nice
man renice

Рекомендуем прочитать:

  • Как узнать, как долго выполняется процесс в Linux
  • Как отобразить информацию о процессе с помощью Procs в Linux

Надеюсь, вы получили общее представление о том, что такое процесс Linux и как изменить его приоритет с помощью утилит nice и renice. Надеюсь, это поможет.

Статьи по данной тематике