Как изменить приоритет процесса в 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
Как видно из приведенного выше вывода, значение приятности указано под заголовком столбца "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
Запускать процессы с опцией -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. Надеюсь, это поможет.