Вникаємо в роботу з процесами в linux, linux в життя системного адміністратора

Уже деякий розуміння цієї операційної системи у мене склалося. Непогана, треба сказати, система. Зручна. Для експериментів і реалізації у творчій струмені - в самий раз. Файли створювати-редагувати зразок навчився. Як бути з процесами?

Для цього в основному використовуються дві програми ps і top.

типові завдання

Типові завдання можна виділити наступного характеру:

  1. Знайти всі процеси певного користувача;
  2. Знайти певний процес;
  3. Завершити процес;
  4. Змінити пріоритет процесу;

Зазвичай, до речі, я користуюся синтаксисом BSD-систем, як-то простіше це дається.

знайде всі процеси, запущені під користувачем dmitry

Користувача можна вказувати будь-кого. Згодиться навіть його UID замість імені. Це якщо ми підозрюємо, що юзер Вася щось накосячілі і запустив ресурсомісткі додатки. Або що з правами користувача запущений непотрібний процес ... Одним словом, іноді треба. Не будемо загострювати увагу.

Для того, щоб знайти певний процес, найпростіше скористатися фільтром grep:

# Ps aux | grep httpd

Вникаємо в роботу з процесами в linux, linux в життя системного адміністратора

Пошук певного процесу

Так ми Отфильтруем серед усього списку процесів ті, в описі яких (командний рядок, наприклад) є слово httpd.

Так, припустимо, знайдений небажаний процес. Як же його завершити?

Завершити процес в CentOS

Можна завершити процес нацькувавши на нього команду kill:

# kill <сигнал>

До речі, посилати сигнали можна не тільки на завершення. Наприклад, чудова утиліта dd приймає сигнал USR1 і видає поточний прогрес (а так як виконується вона без відображення прогресу, це буває корисно).

Ще один спосіб - скористатися утилітою top:

Вникаємо в роботу з процесами в linux, linux в життя системного адміністратора

Утиліта 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 процесу, для якого потрібно змінити пріоритети.

Виділяючи пріоритет потрібно віддавати собі звіт в тому, що легко можна пришити систему, випадково виділивши всі ресурси на виконання «важких» завдань так, що втрутитися вже не буде можливості. А додати до цього ще й можливі помилки в скрипті, які можуть стати фатальними. Будьте уважні!