Как компьютер решает тысячи задач одновременно — от запуска приложений до управления памятью. Разбираемся просто, на примерах из жизни.
Операционная система (ОС) — это набор программ, которые управляют всем происходящим на компьютере. Она не видна пользователю напрямую, но работает каждый момент, пока устройство включено.
Представьте большой торговый центр. Там есть администрация, которая распределяет потоки людей по этажам, следит за работой эскалаторов, распределяет парковочные места и решает, какие магазины открываются в какой час. Вы как посетитель не видите эту работу, но торговый центр без неё превратился бы в хаос. ОС — это именно такая «администрация» вашего компьютера.
ОС решает, какая программа сейчас работает на процессоре, сколько времени ей выделяется и что делать, если программ слишком много.
Оперативная память — ограниченный ресурс. ОС следит за тем, чтобы каждая программа получала ровно столько, сколько ей нужно, и не мешала другим.
Все ваши файлы хранятся на диске в определённой структуре. ОС организует доступ к ним, чтобы вы могли быстро найти нужный документ или фото.
Процесс — это программа, которая сейчас выполняется. Когда вы открываете браузер, текстовый редактор или игру — каждый из них становится процессом.
У каждого процесса есть свой идентификатор (PID), приоритет и выделенная память. Операционная система работает как диспетчер: она решает, какой процесс сейчас получает время процессора, а какой подождёт.
Это называется многозадачностью — ОС переключается между процессами так быстро, что нам кажется, что они работают одновременно.
# Посмотреть все запущенные процессы ps aux # Найти конкретный процесс ps aux | grep firefox # Убить процесс по имени killall firefox # Посмотреть процессы в реальном времени top
Представьте кухню ресторана с одним поваром. Он не может готовить все блюда одновременно — он берёт один заказ, делает часть работы, ставит на огонь, берёт следующий заказ, возвращается к первому и так далее. Если повар быстрый — гости не замечают задержек. Это и есть многозадачность: процессор мгновенно переключается между задачами.
Зомби-процесс — это завершившийся процесс, который ещё не удалён из таблицы процессов, потому что родительский процесс не забрал его результат. Как «мёртвый номер» в очереди — место занято, но никто им не пользуется.
firefox)
Оперативная память (RAM) — это «рабочий стол» компьютера. Всё, что выполняется прямо сейчас, должно находиться в RAM. Управление памятью — одна из важнейших задач ОС.
Виртуальная память — приём, когда ОС использует часть жёсткого диска как «расширение» оперативной памяти. Если RAM заканчивается, данные временно переносятся на диск в файл подкачки (swap).
Защита памяти — каждому процессу ОС выделяет изолированный участок памяти. Процесс не может случайно (или намеренно) обратиться к памяти другого процесса. Это как стены между кабинетами в офисе.
Виртуальная адресация — каждый процесс «видит» память так, будто она вся принадлежит только ему. ОС маппит виртуальные адреса на физические.
# Сколько оперативной памяти используется free -h # Использование памяти по процессам top -o %MEM # Проверить swap swapon --show # Память конкретного процесса cat /proc/1234/status | grep VmRSS
Представьте рабочий стол: на нём место только для 5 тетрадей (это ваша RAM). Если нужно работать с шестой — вы кладёте одну тетрадь в ящик стола (это swap на диске). Работать с ней станет медленнее (нужно доставать из ящика), но зато место на столе освободилось. Чем больше RAM — тем больше «тетрадей» влезет на «стол» одновременно.
| Команда | Что делает | Пример вывода |
|---|---|---|
free -h | Показывает общее, занятое и свободное | total: 8Gi, used: 5.2Gi, free: 2.8Gi |
vmstat 1 | Статистика виртуальной памяти каждую секунду | si/so — обмен с swap |
smem -t | Память по процессам с учётом PSS | firefox — 640M, code — 220M |
cat /proc/meminfo | Детальная информация о памяти | MemTotal, MemFree, Buffers, Cached |
Файловая система — это способ организации и хранения файлов на диске. Она определяет, как данные записываются, как называются и как к ним обращаются.
В Linux всё начинается с корневого каталога /. От него отходят ветви: /home для пользователей, /etc для конфигурации, /var для логов. Это как дерево файлов.
ext4 — основная в Linux, надёжная и проверенная. NTFS — стандарт Windows. FAT32 — совместимая, но устаревшая. Btrfs — современная с поддержкой снапшотов.
Каждый файл имеет владельца, группу и набор прав: чтение (r), запись (w), выполнение (x). Это система безопасности: например, обычный пользователь не может случайно удалить системные файлы.
# Посмотреть содержимое текущей папки ls -la # Создать папку mkdir projects # Копировать файл cp report.pdf /backup/ # Изменить права доступа chmod 755 script.sh # Посмотреть информацию о диске df -h # Занять место на диске du -sh /home/user/*
Монтирование — процесс подключения файловой системы к каталогу. В Linux «подключить» USB-флешку — значит присоединить её к точке монтирования (например, /mnt/usb).
Inode — структура данных, хранящая информацию о файле: права, владелец, размер, расположение блоков на диске. Имя файла — это просто «этикетка», указывающая на inode.
Файловые дескрипторы — числовые идентификаторы открытых файлов. Стандартные: 0 — stdin (ввод), 1 — stdout (вывод), 2 — stderr (ошибки).
Файловая система — это как библиотека. У неё есть строгая структура: залы (каталоги), полки (подкаталоги), книги (файлы) и карточки-индексы (inode) с информацией о каждой книге. Права доступа — это пропускная система: студент может читать в читальном зале, а редактировать содержание книг может только библиотекарь.
Командная строка (терминал) — это интерфейс, через который вы общаетесь с ОС напрямую. Несмотря на графический интерфейс, терминал остаётся мощнейшим инструментом для системных администраторов и разработчиков.
# Найти все .txt файлы find /home -name "*.txt" # Посмотреть содержимое файла cat notes.txt # Искать текст в файле grep "ошибки" log.txt # Первые 10 строк файла head -n 10 data.csv
# Имя текущей системы uname -a # Кто я (текущий пользователь) whoami # Текущая директория pwd # Узнать версию ядра uname -r
# Проверить соединение ping google.com # Посмотреть сетевые интерфейсы ip addr show # Открытые порты ss -tuln # DNS-запрос nslookup example.com
Графический интерфейс — как заказ еды в ресторане по меню. А терминал — как быть шеф-поваром: вы точно контролируете каждый ингредиент, можете объединять операции и автоматизировать повторяющиеся задачи. Один скрипт в терминале может заменить часы ручной работы в графическом интерфейсе.
# Пайплайн: вывод одной команды → вход другой cat log.txt | grep ERROR | wc -l # Перенаправление вывода в файл echo "Привет" > hello.txt # Дозапись в конец файла echo "Строка 2" >> hello.txt # Сортировка + уникальные строки sort users.txt | uniq
Пайплайн (|) — мощнейший механизм Linux. Он соединяет команды в цепочку: результат одной команды автоматически становится входом для следующей.
Перенаправление — отправка вывода в файл вместо экрана. > перезаписывает файл, >> дописывает в конец.
Стандартные потоки: stdin (0), stdout (1), stderr (2). Можно перенаправлять и ошибки: 2> errors.log
Автоматизация — это главная сила командной строки. Вместо того чтобы повторять одни и те же действия каждый день, вы пишете скрипт, и компьютер делает всё сам.
Bash-скрипт — это текстовый файл с набором команд, который ОС выполняет последовательно. Скрипт может содержать условия, циклы и функции — как настоящая программа.
Cron — планировщик задач в Linux. Он позволяет запускать команды по расписанию: каждую минуту, каждый час, раз в неделю или в определённое время.
Примеры из реальной жизни: автоматическое резервное копирование базы данных каждую ночь, отправка отчётов по email каждое утро, очистка временных файлов раз в неделю.
#!/bin/bash # Автоматический бэкап проекта DATE=$(date +%Y-%m-%d) SOURCE="/home/user/projects" DEST="/mnt/backup" # Создаём архив с датой tar -czf $DEST/backup-$DATE.tar.gz $SOURCE # Выводим результат echo "Бэкап создан: backup-$DATE.tar.gz"
# Открываем редактор crontab crontab -e # Бэкап каждый день в 3:00 ночи 0 3 * * * /home/user/scripts/backup.sh # Очистка логов каждое воскресенье 0 0 * * 0 /usr/bin/truncate -s 0 /var/log/app.log # Проверка сайта каждые 5 минут */5 * * * * curl -s -o /dev/null https://mysite.com
Формат cron-выражения:
минуты часы день_мес месяц день_недели команда
* — означает «каждый». Например, 0 9 * * 1-5 — каждый рабочий день в 9:00.
Символ */5 — каждые 5 единиц (5 минут, 5 часов и т.д.).
Просмотреть запланированные задачи: crontab -l
Автоматизация в Linux — это как настроить автоматическую подписку на доставку продуктов: вы один раз выбираете, что вам нужно, когда и куда доставлять — и каждый раз это происходит без вашего участия. Если изменились вкусы — вы редактируете настройки (скрипт), а не бегаете каждый раз в магазин.
Сделайте скрипт исполняемым через chmod +x script.sh, затем запустите: ./script.sh
Современная замена cron в Systemd-системах. Более гибкие, с логированием и зависимостями между задачами.
Вывод скриптов логируется: >> /var/log/backup.log. Чтобы понять, что пошло не так — смотрите в лог-файлы.
| Команда | Описание | Пример |
|---|---|---|
ls -la | Список файлов с правами и размерами | Просмотр всех файлов в текущей папке |
cd /path | Перейти в каталог | cd /var/log |
cp -r dir1 dir2 | Рекурсивное копирование папки | Копирование всей папки проекта |
grep -r "text" . | Поиск текста во всех файлах | Найти ошибку в коде |
top / htop | Мониторинг процессов в реальном времени | Посмотреть нагрузку на CPU |
ps aux | grep name | Поиск процесса по имени | ps aux | grep nginx |
kill -9 PID | Принудительное завершение процесса | Убить зависшую программу |
ping google.com | Проверка сетевого соединения | Доступен ли интернет? |
chmod 755 file | Изменить права доступа | Сделать скрипт исполняемым |
systemctl status svc | Статус системной службы | Работает ли nginx? |