Ось повноцінний урок, розроблений за твоєю структурою та у стилі енергійного CS50.
🎓 CS50: Моніторинг системи (top, htop, ps)
Привіт, друзі! 👋
Уявіть ситуацію. П'ятниця вечір. Ви запускаєте свій код, або гру, або сервер, який ви так довго налаштовували... і раптом все починає гальмувати. Курсор рухається ривками, вентилятори ноутбука гудуть, ніби літак йде на зліт 🛫, а програма не відповідає.
Звучить знайомо?
Виникає питання: Хто винен? Яка саме програма "з’їла" всю пам’ять? Хто завантажив процесор на 100%? Чи це ваша програма, чи, можливо, антивірус вирішив перевірити файли в найбільш непідходящий момент?
Сьогодні ми навчимося заглядати "під капот" операційної системи Linux. Ми перестанемо вгадувати й навчимося бачити правду. Ласкаво просимо у світ системного моніторингу.
1. 🔥 Вступ: Кухня вашого комп'ютера
Давайте використаємо аналогію. Уявіть, що ваш комп'ютер — це велика ресторанна кухня.
- CPU (Процесор) — це Шеф-кухар. Він дуже швидкий, нарізає овочі, смажить м’ясо, роздає команди.
- RAM (Оперативна пам’ять) — це робочі столи. Чим більше столів, тим більше продуктів можна розкласти одночасно.
- Процеси (Programs/Processes) — це замовлення.
Коли комп’ютер працює нормально, Шеф встигає все робити, а на столах є вільне місце. Але що відбувається, коли приходить замовлення на банкет для 500 осіб (важка програма)? Шеф бігає в паніці, столи завалені, і він не може навіть зробити просту каву (відкрити браузер).
Нам потрібен спосіб зайти на кухню і подивитися: хто саме зайняв усі столи?
Сьогодні нашими інструментами будуть:
1. ps — фотоапарат (робить один знімок ситуації).
2. top — камера спостереження (показує ситуацію в реальному часі).
3. htop — камера спостереження в 4K з кольоровим дисплеєм і зручним пультом.
2. 🧠 Теоретична база (Як це працює?)
Перш ніж натискати клавіші, розберемося з базою.
В Linux (та й у macOS, Windows) кожна запущена програма — це Процес. Навіть якщо ви просто відкрили термінал — це процес. Сама оболонка, в якій ви пишете команди — це теж процес.
Що треба запам’ятати залізно:
- PID (Process ID): У кожного процесу є унікальний номер. Як номер паспорта. Якщо ви хочете щось зробити з процесом (наприклад, закрити його), ви звертаєтесь до нього за PID.
- User: Хто запустив процес? (Ви, root, або якийсь системний сервіс).
- 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. 🛠 Практична частина
Час забруднити руки. Виконайте ці завдання прямо зараз:
-
🔹 Розвідка боєм: Запустіть
ps aux. Знайдіть у списку процес із назвою вашого терміналу (наприклад,bashабоzsh). Який у нього PID? -
🔹 Хто найбільший ненажера? Запустіть
top. Натисніть клавішуM(Shift+m). Це відсортує процеси не за процесором, а за пам'яттю (MEM). Яка програма займає найбільше пам'яті зараз? (Ставлю 10 доларів, що це браузер або IDE 😉). -
🔹 Пошук голки в копиці сіна: У вас запущено сотні процесів. Як знайти, чи запущений Python? Ми можемо скомбінувати знання з минулих уроків (пайпи):
bash ps aux | grep pythonСпробуйте знайти процесsshабоchrome. -
🔹 Міні-кейс: "Стрес-тест": (Обережно, це навантажить ваш ПК на кілька секунд!) Відкрийте два вікна терміналу. У першому запустіть
htop. У другому запустіть команду, яка читає з "генератора випадкових чисел" в нікуди (це навантажить одне ядро CPU):bash yes > /dev/nullДивіться вhtop. Ви побачите, як одне з ядер ("Шеф-кухар") почервоніє і завантажиться на 100%. А в списку з'явиться процесyes. Завдання: Зупиніть командуyes(натиснітьCtrl+Cу другому вікні) і подивіться, як графік уhtopвпаде вниз.
5. 💡 Мислення як у розробника
Як думає новачок?
"Ой, CPU 100%! Це погано! Треба все закривати!"
Як думає досвідчений інженер (Senior):
"CPU 100%? Добре, значить сервер відпрацьовує гроші, які ми за нього платимо. Питання в тому: чи це корисна робота?"
Типові помилки:
- Дивитися тільки на CPU. Іноді сервер гальмує не тому, що процесор зайнятий, а тому, що закінчилася RAM і система почала використовувати жорсткий диск як пам'ять (це називається swapping). У
htopце видно, коли заповнюється смужкаSwp. Це смерть для швидкодії. - Не знати про 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. Буде небезпечно! 🔥
До зустрічі!