Программирование и IT
Как изучить Linux с нуля
Linux работает на большинстве серверов, в контейнерах и на множестве устройств, поэтому командная строка нужна разработчику, тестировщику, аналитику и системному администратору. Осваивать систему удобнее всего не чтением списков команд, а ежедневной работой в терминале и решением небольших практических задач. Ниже — последовательность тем на два-три месяца.
В этой статье
Где взять Linux, ничего не сломав#
Переустанавливать основную систему не нужно. Безопасные варианты:
- виртуальная машина (VirtualBox, UTM на Mac) с Ubuntu или Debian;
- WSL в Windows — Linux-окружение прямо внутри системы;
- недорогой облачный сервер — ближе всего к реальной работе, заодно
научись заходить по SSH.
Для начала подойдёт любой популярный дистрибутив: Ubuntu, Debian, Fedora.
Разница между ними для новичка — в основном в менеджере пакетов (apt или
dnf).
Первые две недели: файловая система и навигация#
Дерево каталогов от корня /: где лежат настройки (/etc), журналы
(/var/log), домашние каталоги (/home). Базовые команды:
# где я
Встроенная справка — man команда и команда --help. Привыкай
заглядывать туда первым делом. Осторожно с rm -r: корзины в терминале нет.
Недели 3–4: права, пользователи, sudo#
Владелец, группа, остальные; права на чтение, запись и выполнение. Запись
rwxr-xr-- и её числовой вид 754: каждая тройка переводится в число
(r = 4, w = 2, x = 1). Команды chmod, chown, sudo, id, useradd.
Упражнение: создай пользователя, общий каталог для группы и проверь,
кто что может в нём делать.
Недели 5–6: текст, потоки, поиск#
Сила командной строки — в соединении маленьких программ. Перенаправление
> и >>, конвейер |, команды grep, sort, uniq, wc, head,
tail, find, cut. Пример задачи: найти десять IP-адресов, которые чаще
всего встречаются в журнале веб-сервера. Текстовый редактор в терминале —
nano для начала, позже стоит освоить основы vim.
Недели 7–8: пакеты, процессы, службы, сеть#
Установка программ через менеджер пакетов, просмотр процессов (ps,
top или htop), сигналы и kill. Службы в systemd: systemctl status,
start, enable, журналы через journalctl. Сеть: ip a, ping,
curl, ss, вход на сервер по SSH-ключу вместо пароля.
Недели 9–10: скрипты на bash#
Переменные, условия, циклы, аргументы скрипта, код возврата. Первые
полезные скрипты — резервная копия каталога в архив с датой в имени,
очистка старых файлов, проверка свободного места с предупреждением.
Запуск по расписанию — через cron или таймеры systemd. Скрипты храни в
Git-репозитории, проверяй анализатором ShellCheck.
Учебный проект#
Подними на виртуальной машине или облачном сервере веб-сервер nginx со
своей страницей, настрой брандмауэр, вход только по ключу, ежедневный
бэкап скриптом и ротацию журналов. Опиши все шаги в README так, чтобы по
нему можно было повторить настройку с чистой системы, — это хороший
показатель того, что ты понимаешь, а не копируешь команды.
Как проверять себя#
- Удали виртуальную машину и настрой её заново по своим записям.
- Решай задачи вида «найди файл больше 100 МБ, изменённый за
последнюю неделю» без поиска в интернете. - Объясни вывод
ls -lдля любого файла: тип, права, владелец, размер. - Проходи учебные игры в терминале, где каждый уровень открывается
найденным паролем.
План по этапам
- Неделя 1 — установкаВиртуальная машина, WSL или облачный сервер с Ubuntu или Debian.
- Недели 2–4 — файлы и праваНавигация, работа с файлами, man, права доступа, пользователи и sudo.
- Недели 5–6 — текст и конвейерыgrep, sort, find, перенаправления; разбор журнала веб-сервера.
- Недели 7–8 — системаПакеты, процессы, systemd, сеть и SSH по ключу.
- Недели 9–12 — скрипты и проектBash-скрипты, cron, свой сервер с nginx и бэкапом, описанный в README.
Начать изучать эту тему у себя
План ляжет в твой репозиторий: отмечай этапы, веди конспект — история изменений покажет, как ты продвинулся.
Проверь себя
1.Какая команда выводит путь к текущему каталогу?
2.Какой числовой вид у прав rw-r--r--?
3.Права rwxr-xr-x записаны числом. Каким?
Источники
-
LinuxCommand.orgБесплатная книга The Linux Command Line и уроки по командной строке (на английском)бесплатно
-
Документация UbuntuОфициальные руководства и учебники дистрибутивабесплатно
-
The Linux Kernel ArchivesОфициальный сайт ядра Linux и его документациибесплатно
Было полезно?