Модуль 14

Моніторинг системи: top, htop, ps

Ось повноцінний урок, розроблений за твоєю структурою та у стилі енергійного CS50.


🎓 CS50: Моніторинг системи (top, htop, ps)

Привіт, друзі! 👋

Уявіть ситуацію. П'ятниця вечір. Ви запускаєте свій код, або гру, або сервер, який ви так довго налаштовували... і раптом все починає гальмувати. Курсор рухається ривками, вентилятори ноутбука гудуть, ніби літак йде на зліт 🛫, а програма не відповідає.

Звучить знайомо?

Виникає питання: Хто винен? Яка саме програма "з’їла" всю пам’ять? Хто завантажив процесор на 100%? Чи це ваша програма, чи, можливо, антивірус вирішив перевірити файли в найбільш непідходящий момент?

Сьогодні ми навчимося заглядати "під капот" операційної системи Linux. Ми перестанемо вгадувати й навчимося бачити правду. Ласкаво просимо у світ системного моніторингу.


1. 🔥 Вступ: Кухня вашого комп'ютера

Давайте використаємо аналогію. Уявіть, що ваш комп'ютер — це велика ресторанна кухня.

  • CPU (Процесор) — це Шеф-кухар. Він дуже швидкий, нарізає овочі, смажить м’ясо, роздає команди.
  • RAM (Оперативна пам’ять) — це робочі столи. Чим більше столів, тим більше продуктів можна розкласти одночасно.
  • Процеси (Programs/Processes) — це замовлення.

Коли комп’ютер працює нормально, Шеф встигає все робити, а на столах є вільне місце. Але що відбувається, коли приходить замовлення на банкет для 500 осіб (важка програма)? Шеф бігає в паніці, столи завалені, і він не може навіть зробити просту каву (відкрити браузер).

Нам потрібен спосіб зайти на кухню і подивитися: хто саме зайняв усі столи?

Сьогодні нашими інструментами будуть: 1. ps — фотоапарат (робить один знімок ситуації). 2. top — камера спостереження (показує ситуацію в реальному часі). 3. htop — камера спостереження в 4K з кольоровим дисплеєм і зручним пультом.


2. 🧠 Теоретична база (Як це працює?)

Перш ніж натискати клавіші, розберемося з базою.

В Linux (та й у macOS, Windows) кожна запущена програма — це Процес. Навіть якщо ви просто відкрили термінал — це процес. Сама оболонка, в якій ви пишете команди — це теж процес.

Що треба запам’ятати залізно:

  1. PID (Process ID): У кожного процесу є унікальний номер. Як номер паспорта. Якщо ви хочете щось зробити з процесом (наприклад, закрити його), ви звертаєтесь до нього за PID.
  2. User: Хто запустив процес? (Ви, root, або якийсь системний сервіс).
  3. CPU% та MEM%: Скільки уваги Шеф-кухаря (процесора) і місця на столі (пам'яті) займає цей процес.

Як це працює "під капотом"?

У Linux є спеціальна папка /proc. Це не справжні файли на диску, це "віртуальна" файлова система. Ядро Linux (Kernel) постійно записує туди інформацію про все, що відбувається.

Наші утиліти (ps, top) не магічні. Вони просто читають файли з папки /proc, гарно їх оформлюють і показують вам табличку.


3. 🧪 Приклади (Від простого до реального)

Відкривайте термінал. Поїхали!

Приклад 1: Миттєве фото (ps)

Введіть просто:

ps

Що ви очікуєте побачити? Усі процеси на комп'ютері? Натискайте Enter.

Ви побачите лише 2-3 рядки.

  PID TTY          TIME CMD
 1234 pts/0    00:00:00 bash
 5678 pts/0    00:00:00 ps

Чому так мало? За замовчуванням ps показує тільки ті процеси, які запущені в цьому конкретному вікні терміналу і від вашого імені. Це як сфоткати лише свою тарілку в ресторані.

Приклад 2: Фото всього ресторану (ps aux)

Щоб побачити все, ми додаємо "магічні" прапорці. Стандарт де-факто у світі Linux:

ps aux

(Запам'ятайте як мнемоніку: "AUX" — як аудіо-вхід в машині).

  • a = усі процеси (all).
  • u = детальна інформація (user/owner).
  • x = навіть ті процеси, що не мають вікна (працюють у фоні).

Ви побачите величезний список, який пролетить перед очима. Це повний знімок системи на цю секунду.

Приклад 3: Відеоспостереження (top)

Знімки — це добре, але ситуація змінюється щосекунди. Введіть:

top

Ви побачите таблицю, яка оновлюється сама! Вгорі — загальна статистика (скільки всього пам'яті, як завантажений CPU). Внизу — список процесів. Найактивніші "спливають" нагору (тому і називається top).

Бачите колонку %CPU? Якщо там хтось показує 99.9, вітаю — ви знайшли винуватця гальм!

Щоб вийти, натисніть клавішу q.

Приклад 4: Те саме, але красиво (htop)

top — це класика (як чорно-біле ТБ). Але у 2024 році ми хочемо кольорів і зручності. Введіть:

htop

(Якщо пише "command not found", це нормально. Це програма, яку часто треба довстановити. Але на більшості серверів вона є).

У htop: * Є кольорові графіки (бари) використання CPU/RAM. * Можна скролити мишкою або стрілками! * Можна натиснути F9, щоб убити процес (але про це згодом).


4. 🛠 Практична частина

Час забруднити руки. Виконайте ці завдання прямо зараз:

  1. 🔹 Розвідка боєм: Запустіть ps aux. Знайдіть у списку процес із назвою вашого терміналу (наприклад, bash або zsh). Який у нього PID?

  2. 🔹 Хто найбільший ненажера? Запустіть top. Натисніть клавішу M (Shift+m). Це відсортує процеси не за процесором, а за пам'яттю (MEM). Яка програма займає найбільше пам'яті зараз? (Ставлю 10 доларів, що це браузер або IDE 😉).

  3. 🔹 Пошук голки в копиці сіна: У вас запущено сотні процесів. Як знайти, чи запущений Python? Ми можемо скомбінувати знання з минулих уроків (пайпи): bash ps aux | grep python Спробуйте знайти процес ssh або chrome.

  4. 🔹 Міні-кейс: "Стрес-тест": (Обережно, це навантажить ваш ПК на кілька секунд!) Відкрийте два вікна терміналу. У першому запустіть htop. У другому запустіть команду, яка читає з "генератора випадкових чисел" в нікуди (це навантажить одне ядро CPU): bash yes > /dev/null Дивіться в htop. Ви побачите, як одне з ядер ("Шеф-кухар") почервоніє і завантажиться на 100%. А в списку з'явиться процес yes. Завдання: Зупиніть команду yes (натисніть Ctrl+C у другому вікні) і подивіться, як графік у htop впаде вниз.


5. 💡 Мислення як у розробника

Як думає новачок?

"Ой, CPU 100%! Це погано! Треба все закривати!"

Як думає досвідчений інженер (Senior):

"CPU 100%? Добре, значить сервер відпрацьовує гроші, які ми за нього платимо. Питання в тому: чи це корисна робота?"

Типові помилки:

  1. Дивитися тільки на CPU. Іноді сервер гальмує не тому, що процесор зайнятий, а тому, що закінчилася RAM і система почала використовувати жорсткий диск як пам'ять (це називається swapping). У htop це видно, коли заповнюється смужка Swp. Це смерть для швидкодії.
  2. Не знати про Load Average. У top та htop вгорі є три числа, наприклад: Load average: 0.50, 1.20, 2.00. Це "довжина черги" до каси за 1, 5 і 15 хвилин.
    • Якщо у вас 4 ядра, а Load Average = 4.0, значить всі касири зайняті, але черги немає.
    • Якщо Load Average = 10.0 — у вас пробка, система захлинається.

Порада від Девіда Малана:

Використовуйте htop для швидкого візуального аналізу ("Що відбувається?!"). Використовуйте ps aux, коли вам треба використати результат у скрипті або відправити лог адміну ("Ось доказ!").


6. 🧩 Підсумок

Отже, що ми сьогодні зробили? Ми перетворили "чорну скриньку" на прозорий механізм.

  • Тепер ви знаєте, що програми — це процеси з PID.
  • Ви вмієте робити миттєвий знімок "кухні" через ps aux.
  • Ви вмієте моніторити навантаження в реальному часі через top або htop.

Тепер, коли комп’ютер почне гальмувати, ви не будете безпомічно перезавантажувати його. Ви відкриєте термінал, знайдете винуватця і скажете: "Ага! Це ти!"

Тизер наступного уроку: Добре, ви знайшли процес, який "повісив" систему. Ви знаєте його PID. Що далі? Як примусово завершити його роботу, якщо він не слухається? На наступному уроці ми поговоримо про "цифрових кілерів" — команду kill та сигнали в Linux. Буде небезпечно! 🔥

До зустрічі!