Вникаємо в роботу з процесами в linux, linux в життя системного адміністратора
Уже деякий розуміння цієї операційної системи у мене склалося. Непогана, треба сказати, система. Зручна. Для експериментів і реалізації у творчій струмені - в самий раз. Файли створювати-редагувати зразок навчився. Як бути з процесами?
Для цього в основному використовуються дві програми ps і top.
типові завдання
Типові завдання можна виділити наступного характеру:
- Знайти всі процеси певного користувача;
- Знайти певний процес;
- Завершити процес;
- Змінити пріоритет процесу;
Зазвичай, до речі, я користуюся синтаксисом BSD-систем, як-то простіше це дається.
знайде всі процеси, запущені під користувачем dmitry
Користувача можна вказувати будь-кого. Згодиться навіть його UID замість імені. Це якщо ми підозрюємо, що юзер Вася щось накосячілі і запустив ресурсомісткі додатки. Або що з правами користувача запущений непотрібний процес ... Одним словом, іноді треба. Не будемо загострювати увагу.
Для того, щоб знайти певний процес, найпростіше скористатися фільтром grep:
# Ps aux | grep httpd

Пошук певного процесу
Так ми Отфильтруем серед усього списку процесів ті, в описі яких (командний рядок, наприклад) є слово httpd.
Так, припустимо, знайдений небажаний процес. Як же його завершити?
Завершити процес в CentOS
Можна завершити процес нацькувавши на нього команду kill:
# kill <сигнал>
До речі, посилати сигнали можна не тільки на завершення. Наприклад, чудова утиліта dd приймає сигнал USR1 і видає поточний прогрес (а так як виконується вона без відображення прогресу, це буває корисно).
Ще один спосіб - скористатися утилітою top:

Утиліта top в CentOS Linux
Вбивати процеси за допомогою неї - одне задоволення. Муха-ха. 🙂 Жарт. Ні, справді. Натискаємо кнопку k (kill), вводимо PID процесу і, якщо треба, сигнал. І тиснемо Enter. До речі, утиліта має багаті можливості h (help). Пропонується вивчити можливості утиліти самостійно.
Змінити пріоритет процесу в Linux
Так, що стосується пріоритету процесів ... Треба сказати, що пріоритети процесорного часу в Linux (nice) можуть приймати значення від -20 до 19 (0 - за замовчуванням). Чим менше число, тим більше процесорних циклів отримує процес. Користувачі в системі можуть тільки знижувати пріоритет своїх процесів (виставляючи позитивні значення), привілейований користувач ж може виставити будь-який пріоритет.
Запустити програму з необхідним значенням пріоритету можна так:
# Nice -n 5 команда
Зрозуміло, замість значення 5 можна вказати потрібний рівень «ввічливості *».
* Під ввічливістю (англ. Nice) розуміється готовність процесу пожертвувати свої такти процесора іншим завданням.
А змінити пріоритет вже запущеного процесу командою renice:
PID - ідентифікатор процесу, для якого необхідно змінити пріоритет.
Правда помітити результат їх виконання можна, коли все процесорні такти використовуються на 100% (тобто дефіцит процесорного часу).
Варто, до речі, не забувати про пріоритети процесів в плані введення-виведення. Для цього служить команда ionice:
# Ionice -c2 -n0 bash
Запустить баш з найвищим пріоритетом в плані введення-виведення. Всього, до речі, є три види пріоритету: 1 для realtime (всі вільні ресурси поставляються в першу чергу), 2 для best effort (за замовчуванням для всіх процесів, можливо вказівку додаткового пріоритету -n<0-7>, більша перевага віддається найменшим значенням) і 3 для idle (процес може звертатися до диска тільки тоді, коли ніхто більше не звертається). Є ще параметр -p, який вказує pID процесу, для якого потрібно змінити пріоритети.
Виділяючи пріоритет потрібно віддавати собі звіт в тому, що легко можна пришити систему, випадково виділивши всі ресурси на виконання «важких» завдань так, що втрутитися вже не буде можливості. А додати до цього ще й можливі помилки в скрипті, які можуть стати фатальними. Будьте уважні!