Вы можете изменить, должен ли определенный процесс получать приоритет при потреблении ЦП с помощью команд nice и renice.
Каждый отдельный процесс, запущенный на компьютере с Linux, имеет приоритет для своего выполнения, который может быть преобразован в то, сколько мощности процессора будет выделено этому процессу для выполнения.
Конечно, в Linux вы можете контролировать столько, сколько захотите, поэтому вы также можете контролировать, какой приоритет что-либо должно иметь в системе при его запуске.
Если вы запустите команду ps, вы сможете увидеть, какие процессы в данный момент запущены в вашей системе Linux и какой приоритет они имеют в данный момент:
Теперь, если вы хотите запустить что-то с большим приоритетом (тогда как приоритетом будет большая мощность процессора), вы можете использовать команду ‘nice’, чтобы запустить это и контролировать, насколько этот конкретный процесс приятен для остальной части системы.
Приоритетность удобства выполнения этой команды изменяется от -20 до 19, где -20 означает наивысший приоритет и, как следствие, максимально возможную мощность процессора, до 19, что является минимально возможным значением и, следовательно, меньшим распределением мощности процессора.
Чтобы использовать команду nice, вы должны быть root или иметь возможности sudo в системе, поскольку это очень деликатная команда.
Предполагая, что вы являетесь пользователем root, вы должны ввести:
nice -n 12 <command>
Это сообщит системе, что вы хотите запустить <command>, используя приоритет 12 (10 по умолчанию, если вы не вводите никаких значений). В принципе, он будет занимать низкое место в списке приоритетов и, следовательно, не будет потреблять всю мощность процессора.
Представьте, что у вас есть процесс, который выполняет несколько вычислений и выполнение которого может занять несколько секунд или даже минут. Чем больше мощности выделено этому процессу, тем быстрее он запустится и завершится. Именно здесь эта команда может стать полезной, хотя и опасной.
Если у вас есть скрипт, который запускает множество процессов в общей среде или на рабочем сервере, запуск чего-либо с более высоким приоритетом может привести к тому, что сервер перестанет отвечать на запросы или выйдет из строя. Это потому, что центральный процессор будет выделен почти исключительно для запуска любого процесса, который вы вызвали с высоким приоритетом (или отрицательным значением), следовательно, он перестанет отвечать на запросы или даже отключит сервер, например, если в вашем скрипте есть бесконечный цикл.
Допустим, вы начали запускать процесс с помощью команды nice, но через некоторое время вы хотите изменить его, хотя вам нужно, чтобы процесс продолжал работать, а не прерывал его или перезапускал. Здесь пригодится ваша команда ‘renice’.
Команда ‘renice’ может использоваться очень похожим образом и с использованием той же концепции, что и команда nice, однако она предназначена для изменения приоритета, который вы уже вызвали красиво.
Итак, если вы уже запускаете команду с помощью nice, вы можете изменить ее приоритет с помощью renice следующим образом (опять же, запустив ее от имени пользователя root):
renice -n -10 <command>
Это изменит предыдущий приоритет процесса, чтобы он стал более важным, следовательно, теперь с большей мощностью (-10).
Вы даже можете использовать это для всех процессов, принадлежащих определенному пользователю, например:
renice -n -10 -u helder
Это изменит приоритет всех процессов, принадлежащих пользователю helder.
Аналогичным образом вы можете использовать такие параметры, как -p и указать идентификатор процесса (или pid) или -g и использовать идентификатор группы процессов.
Вы можете видеть, как Linux позволяет контролировать все, насколько это возможно, в вашей системе, и позволяет вам использовать это в свою пользу.
Возможность назначать и переназначать приоритеты для ваших процессов дает нам большие возможности контролировать, как наша система управляет процессами, насколько эффективно, а также какие расставить приоритеты, чтобы иметь возможность удовлетворить любую вашу потребность.