Усе процеси в системі працюють з певними пріоритетами, також так званими “значеннями nice”, які можуть змінюватися від -20 (найвищий пріоритет) до 19 (найменший пріоритет). Якщо пріоритет не визначено, кожен процес запускатиметься з пріоритетом за умовчанням - 0 (“базовим” пріоритетом розподілу машинного часу). Для процесів із вищим пріоритетом (меншим значенням nice, аж до - 20) буде виділено більше системних ресурсів порівняно з іншими процесами з меншим пріоритетом (до 19), надаючи їм більшу кількість циклів процесора. Звичайні користувачі можуть знижувати пріоритет своїх власних процесів у діапазоні від 0 до 19. Суперкористувач (root
) може встановити для будь-якого процесу будь-яке значення пріоритету.
Якщо один чи кілька процесів використовують занадто багато ресурсів системи, ви можете змінити їх пріоритети замість того, щоб вбивати їх. Для цього використовуйте команду renice. Її синтаксис:
renice пріоритет [[-p] pid ...] [[-g] pgrp ...] [[-u] користувач ...]
де пріоритет
- значення пріоритету, pid
- ідентифікатор процесу (використовуйте опцію -p
для вказівки кількох процесів), pgrp
- ідентифікатор групи процесу (якщо їх кілька, використовуйте -g
) і користувач
- ім'я користувача, який є власником процесу (-u
для кількох користувачів).
Припустимо, що ви запустили процес з PID 785, який виконує тривалі наукові обчислення, а поки він працює, ви хотіли б трохи пограти, для чого потрібно звільнити трохи системних ресурсів. Тоді ви можете набрати:
$ renice +15 785
У цьому разі виконання вашого процесу потенційно може забрати більше часу, проте він не буде забирати процесорний час в інших процесів.
Якщо ви системний адміністратор і бачите, що якийсь користувач запустив занадто багато процесів, і вони використовують занадто багато системних ресурсів, ви можете змінити пріоритет процесів цього користувача за допомогою однієї команди:
# renice +20 -u peter
Після цього всі процеси користувача peter отримають найменший пріоритет і не будуть ускладнювати роботу процесів інших користувачів.
Тепер, коли ви знаєте про те, що можна змінювати пріоритети процесів, вам може знадобитися запустити програму з певним пріоритетом. Для цього використовуйте команду nice.
У цьому разі вам необхідно вказати свою команду як для опції nice. Опція -n
використовується для встановлення значення пріоритету. За умовчанням nice встановлює пріоритет 10.
Наприклад, вам потрібно створити ISO-файл інсталяційного CD-ROM'а з Mandriva Linux:
$ dd if=/dev/cdrom of=~/mandriva1.iso
У деяких системах зі стандартним IDE CD-ROM процес копіювання великих обсягів інформації може захопити занадто багато ресурсів системи. Щоб запобігти блокуванню інших процесів через копіювання, ви можете запустити процес зі зниженим пріоритетом за допомогою цієї команди:
$ nice -n 19 dd if=/dev/cdrom of=~/mandriva1.iso