Модуль I · тема 1, урок 1 з 1 · 120 хв
Сьогодні питаєш у сервера, що в нього всередині. Результат — скрипт
sysinfo.sh і сторінка-паспорт.
| Етап | Хв | Що робимо |
|---|---|---|
| Розминка | 10 | Розібраний системний блок: що думає, що зберігає, що показує |
| Три шари | 15 | Hardware, software, firmware і межа між ними |
| Компоненти й одиниці | 20 | Плата, піраміда пам'яті, ГБ проти ГіБ |
| Перерва | 10 | — |
| Шість команд | 15 | Діагностика сервера в живій SSH-сесії |
Пишемо sysinfo.sh | 20 | Шебанг, chmod +x, перенаправлення |
| Таблиця паспорта | 15 | HTML-сторінка й завантаження по FTP |
| Автоперевірка | 10 | check 01 і виправлення червоних пунктів |
| Здача й ДЗ | 5 | Показуєш запуск скрипта, пояснюєш рядок |
| Разом | 120 |
~/www/lesson-01/:
теки звуться за темою, а не за номером уроку.Три шари, дві межі
Що можна впустити на підлогу — hardware, залізо. Решта — software, програми. Програма всередині плати чи диска, що працює до старту ОС, — firmware, прошивка; на платі це UEFI.
| Приклад | Шар | Чому саме так |
|---|---|---|
| Планка RAM 16 ГБ | hardware | фізична деталь, яку вставляють у слот |
| Драйвер відеокарти | software | файл із кодом; його можна видалити й поставити інший |
| UEFI материнської плати | firmware | код у флеш-мікросхемі плати, працює до старту ОС |
| Контролер усередині SSD | hardware + firmware | чип — залізо, його програма — прошивка |
| Ubuntu 24.04 | software | операційна система лежить на диску як набір файлів |
| Кулер процесора | hardware | крутиться, шумить, збирає пил |
Твій sysinfo.sh | software | текстовий файл із командами |
Ти зайшов у налаштування материнської плати і оновив UEFI до нової версії. Ти оновив залізо чи програму?
На парті розклали: блок живлення, кулер, драйвер відеокарти, модуль RAM. Що з цього software?
Плата з'єднує; дані йдуть до ядра через кеш
Сам ти набереш lscpu, free -h,
lsblk, df -h. dmidecode і
lspci на сервері не запустяться.
| Компонент | Що робить | Чим побачити в Linux |
|---|---|---|
| Процесор (CPU) | виконує команди програм: додає, порівнює, пересилає числа. Усе інше в комп'ютері існує, щоб його годувати даними | lscpu |
| Оперативна пам'ять (RAM) | швидкий тимчасовий стіл: тут лежить усе, з чим програми працюють зараз | free -h |
| Накопичувач (SSD/HDD) | довготривала полиця: зберігає файли й саму ОС, коли живлення вимкнене | lsblk, df -h |
| Материнська плата | з'єднує все доріжками, роздає живлення й тактові сигнали | dmidecode (потрібні права root) |
| Чипсет | розширює процесор: із його небагатьох ліній робить багато портів USB, SATA, PCIe | lspci |
| Відеокарта (GPU) | рахує зображення й паралельні задачі; тисячі простих ядер замість кількох складних | lspci | grep -i vga |
| Блок живлення (PSU) | перетворює 230 В зі стіни на 12 / 5 / 3,3 В для плати | ніяк — це чиста електрика |
| Мережева карта | перетворює дані на сигнал у кабелі або в ефірі | ip -br a |
Ядра — окремі обчислювачі в процесорі. Поки один потік чекає на дані, ядро виконує другий: «4 ядра / 8 потоків» — це чотири залізні ядра.
Команда lscpu показала: Core(s) per socket: 4,
Thread(s) per core: 2, CPU(s): 8.
Скільки в машині фізичних ядер?
Ти дві години писав реферат і жодного разу не зберігав. Вимкнули світло. Де був текст до цієї миті?
Чому пам'ять будують ярусами
| Рівень | Типовий обсяг | Час доступу | Енергонезалежність |
|---|---|---|---|
| Регістри | десятки байтів на ядро | ~0,3 нс | ні |
| Кеш L1 | 32–64 КіБ на ядро | ~1 нс | ні |
| Кеш L2 | 256 КіБ – 2 МіБ на ядро | ~4 нс | ні |
| Кеш L3 | 8–32 МіБ спільні | ~15 нс | ні |
| RAM | 4–64 ГіБ | ~80 нс | ні |
| SSD NVMe | 256 ГБ – 4 ТБ | ~50 мкс | так |
| HDD | 1–20 ТБ | ~8 мс | так |
RAM і кеші живуть лише на струмі: вимкнули світло — дані зникли. Тому текст зберігай на диск.
| Носій | Послідовне читання | Що обмежує |
|---|---|---|
| HDD 7200 об/хв | 150–250 МБ/с | механіка: обертання диска й рух голівки |
| SSD по SATA III | ≈ 550 МБ/с | сам інтерфейс SATA — 6 Гбіт/с |
| SSD NVMe, PCIe 4.0 ×4 | до 7000 МБ/с | уже мікросхеми пам'яті, а не шина |
Програма тисячу разів поспіль читає той самий невеликий масив. Другий і всі наступні проходи помітно швидші за перший. Чому?
Одиниці різні, байти ті самі
Біт — це 1 або 0. Вісім бітів — байт, ним міряють файли: мала
b — біт, велика B — байт.
Виробники дисків рахують тисячами: 1 ГБ — 10⁹ байтів. Система рахує двійками: 1 ГіБ — 2³⁰ байтів.
500 000 000 000 ÷ 1 073 741 824 = 465,66
| СІ | Байтів | Двійкова | Байтів | Показує менше на |
|---|---|---|---|---|
| кілобайт, КБ | 1 000 | кібібайт, КіБ | 1 024 | 2,3% |
| мегабайт, МБ | 10⁶ | мебібайт, МіБ | 1 048 576 | 4,6% |
| гігабайт, ГБ | 10⁹ | гібібайт, ГіБ | 1 073 741 824 | 6,9% |
| терабайт, ТБ | 10¹² | тебібайт, ТіБ | 1 099 511 627 776 | 9,1% |
df -h, free -h, lsblk рахують
по 1024; df -H — по 1000.Ти купив зовнішній диск «1 ТБ», підключив — а система показує 931 ГБ. Тебе обманули?
Питаємо в сервера, з чого він зроблений
Зайди по SSH на свій акаунт. Набирай команди по черзі і звіряй екран зі зразком виводу.
lscpu — процесорМає вийти довгий список рядків «назва: значення». Побачив
command not found — набери назву малими літерами, без пробілу.
Випиши для паспорта чотири рядки:
free -h — оперативна пам'ятьМають вийти рядки Mem і Swap. Бери число зі
стовпчика available: пам'ять із buff/cache система віддає
програмі одразу.
lsblk — блокові пристроїМає вийти дерево: disk — диск, part — розділ.
Колонка MOUNTPOINTS показує теку, до якої підключено розділ.
df -h — скільки місця лишилосяМає вийти таблиця з колонкою Use%. Числа менші, ніж у
lsblk: місце займають службові записи файлової системи.
Рядок tmpfs у паспорт не пиши: це тека в оперативній
пам'яті.
lsblk показує диск sda на 40G, а df -h
для кореня / — лише 38G. Чому числа не збігаються?
uptime — скільки сервер уже працюєМає вийти один рядок. Запис up 27 days — сервер працює 27 днів, load average — навантаження за 1, 5 і 15 хвилин.
Порівняй ці числа з кількістю ядер: більше означає чергу.
uname -a — система і ядроМає вийти один рядок із чотирма відповідями: Linux — ядро, nstekh — ім'я машини, 6.8.0-45 — версія ядра, x86_64 — 64-бітний процесор.
Виконай ті самі шість команд за один раз: дужки збирають їх у групу,
а > кладе спільний вивід в один файл.
Остання команда покаже розмір файлу в байтах. Чекер вимагає понад 300 байтів — реальний вивід шести команд дає кілька тисяч.
Якщо wc -c пише No such file or directory —
повтори mkdir -p.
sysinfo.shОдна команда замість шести — і так щоразу
Скрипт — це текстовий файл із тими самими командами. Нового він не робить, зате набирати їх більше не треба.
1. Зроби першим рядком файлу #!/bin/bash. Цей рядок
каже системі, якою програмою читати файл.
2. Видай файлу право на виконання. Набери три команди підряд:
У другому рядку мають з'явитися три літери x — вони й
дозволяють запуск. Якщо ls пише
No such file or directory, ти в іншій теці: перевір pwd.
rw-r--r--. Тому chmod +x роби по SSH,
після завантаження.3. Скеруй вивід у файл, інакше він зникне разом із вікном. Записів чотири:
| Запис | Що робить |
|---|---|
lscpu | друкує на екран, нічого не зберігає |
lscpu > f.txt | створює f.txt, старий вміст стирає |
lscpu >> f.txt | дописує в кінець |
lscpu | tee f.txt | і на екран, і у файл |
4. Скопіюй цей текст у файл ~/www/lesson-01/sysinfo.sh
і встав своє прізвище. Кожен рядок ти маєш уміти пояснити вголос — про це
питатимуть на здачі.
| Рядок | Пояснення |
|---|---|
OUT="$HOME/..." | одне ім'я замість довгого шляху; $HOME — твоя домашня тека |
$(dirname "$OUT") | bash підставляє шлях без імені файлу |
mkdir -p | створює теку і мовчить, якщо вона вже є |
{ ... } > "$OUT" | вивід усієї групи йде у файл |
grep -E '...' | лишає з lscpu лише потрібні рядки |
останній echo | стоїть поза дужками, тому пише на екран |
5. Запусти скрипт командою ./sysinfo.sh. Має вийти
один рядок «Готово. Паспорт записано у …»; побачив
Permission denied — повернись до кроку 2.
Ти створив скрипт, запускаєш ./sysinfo.sh і бачиш
bash: ./sysinfo.sh: Permission denied. Що сталося?
Скрипт запустився, паспорт надрукувався на екран — але
hardware.txt порожній. Що забули?
6. Відкрий hardware.txt і перенеси числа на сторінку
~/www/lesson-01/index.html: файл у приватній теці ніхто не побачить.
7. Зроби таблицю щонайменше з 7 рядків, по рядку на компонент, і список щонайменше з 6 пунктів: три залізні, три програмні.
8. Дай списку мітку id="hw-sw", а кожному пункту —
data-type="hw" або data-type="sw". Без міток
автоперевірка список не знайде.
Виконуй по черзі. Галочки зберігаються — сторінку можна закрити.
1. Зайди на сервер по SSH під своїм логіном і перевір, де ти опинився.
Має вийти твій логін і шлях до твоєї домашньої теки. Якщо логін чужий —
набери exit і зайди знову.
2. Створи дві теки уроку: приватну для даних і публічну для сторінки.
Команда нічого не друкує — це правильно. Помилка
Permission denied означає, що ти не у своїй домашній теці.
3. Зніми вивід шести команд діагностики в один файл і перевір його розмір.
Має вийти число понад 300 — стільки байтів у файлі. Якщо число менше, якась команда не спрацювала: запусти їх поодинці.
4. Створи скрипт і встав у нього каркас із кроку 7. Зберігає
Ctrl+O, закриває Ctrl+X.
Після виходу перевір першим рядком файлу #!/bin/bash. Без
нього скрипт не запуститься.
5. Видай скрипту право на виконання.
У правах мають з'явитися три літери x. Якщо їх немає —
ти набрав chmod для іншого файлу.
6. Запусти скрипт із його теки.
Має вийти рядок «Готово. Паспорт записано у …». Побачив
Permission denied — повернись до кроку 5.
7. Прочитай зібраний паспорт.
Мають вийти чотири розділи: процесор, пам'ять, диски, система. Файл
порожній — у скрипті загубилося > "$OUT".
8. Зроби сторінку паспорта: таблиця щонайменше з 7 рядків і список
id="hw-sw" щонайменше з 6 пунктів.
Числа в таблиці мають збігатися з hardware.txt — саме це
звіряє чекер. Кожному пункту списку постав
data-type="hw" або data-type="sw".
9. Відкрий свою сторінку в браузері й перевір, що таблиця
й список видно. Порожня сторінка означає, що файл лежить не в
~/www/lesson-01/.
10. Перейди на вкладку «Перевірка» і натисни кнопку. Спроби не обмежені.
check 01Система зайде у твій акаунт, запустить твій скрипт у пісочниці й звірить числа зі сторінкою. Спроби не обмежені.
Демонстраційний режим: результат згенеровано для показу. На сервері
ця кнопка викликає POST /api/check, який запускає чекер уроку
від імені учня.
./sysinfo.sh сам, у живій сесії свого акаунта;hardware.txt — модель CPU і обсяг RAM
збігаються з тим, що написано в таблиці на сторінці;whoami показує твій логін, а не чужий;Це те, що бачить учитель, коли виставляє оцінку.
| Складник | Вага | Результат |
|---|
| Симптом | Причина й лікування |
|---|---|
| «Диск обманює: купив 500, а показує 465» | ГБ проти ГіБ. Перерахуй: 500·10⁹ ÷ 2³⁰ = 465,7 |
Permission denied під час запуску | немає біта x: chmod +x sysinfo.sh по SSH |
| Скрипт працює, файл порожній | забули >: вивід пішов на екран замість файлу |
| Вивід копіювали в редактор і форматування зламалося | не копіюй — використовуй >, >> або tee |
| Опис компонента не зараховано | менше ніж 40 символів або скопійований текст; перепиши своїми словами |
Допиши в ~/www/lesson-01/index.html абзац «яку машину
я б зібрав собі і чому».
Умова одна: назви три конкретні компоненти. Пиши модель або обсяг, а не «хороший процесор».
Потім порівняй ці три числа з числами домашньої машини. Ти виписав їх як домашнє завдання уроку 1.
Звідки взяті числа на цій сторінці — можеш перевірити сам
-h (по 1024) і -H (по 1000).#!/bin/bash і біт виконання.Вивід команд у розділі «Шість команд» — це приклад для навчального сервера. На твоєму акаунті числа будуть свої. Саме твої числа й мають потрапити в таблицю.