Перейти к содержимому

С чего начать изучение linux

  • автор:

Уроки Linux

Linux для начинающих / Урок #1 – Что такое дистрибутивы, Bash Shell и Ubuntu?

Linux для начинающих / Урок #1 – Что такое дистрибутивы, Bash Shell и Ubuntu?

Представляем вам курс по изучению Linux Ubuntu для начинающих с нуля. В ходе курса вы изучите работу с Линукс, научитесь использовать терминал, Bash Shell и в целом изучите администрирование Linux.

Видеоурок

ОС Linux

Данная операционная система была разработана Линусом Торвальдсом. Его идея создать открытую операционную систему стала культовой и уже с первых дней Linux обрел множество поклонников. На момент её создания, а это 1991 год, главным конкурентом была ОС Windows.

ОС Windows сейчас и ранее проповедует идею закрытой ОС, что должна покупаться по отдельности для каждого ПК. И в таком контексте новая, полностью открытая ОС не могла не произвести фурора. Линус Торвальд в то время еще шутил: «В мире без стен – окна не нужны». Крутая отсылка на продукт от Microsoft ✔

Идея ОС Линукс в её открытости.

  • ОС полностью бесплатная. Такой она была с первых дней своего существования.
  • Linux имеет полностью открытий исходный код, а это дает разработчику возможности создать все что-угодно на основе ядра Линукс.

Линукс – это семейство Unix-подобных операционных систем. Unix – торговая марка, что обозначает семейство многозадачных и многопользовательских операционных систем. Простыми словами, Unix системы изначально разрабатывались под многопользовательские многозадачные системы. Это позволяет одновременно работать сразу с несколькими терминалами, разными людьми, при этом каждый из них может выполнять свои действия, что будут использовать ресурсы одного общего ПК.

Простой пример

На Виндовс у вас всегда есть один экран. Это главный экран, на котором можно открывать приложения. В Unix системах вы всегда можете иметь множество окон и на каждом из них может быть выполнена своя определенная работа.

Кстати, операционная система Mac OS разработана на основе семейства Unix. Считается, что как раз этот фактор позитивно выделяет всю систему и делает ее более плавной и удобной в сравнении с Виндовс.

Почему Линукс выбирают программисты?

Windows обогнала Linux и стала общепризнанным стандартом по причине своей портативности. Её легко можно установить и она идеально подходит для ежедневного использования.

Проблема Windows в том, что она является закрытой системой. Вы можете делать приложения под Виндовс или под Mac, но все эти ОС будут ограничивать вас, не давая доступа к некоторым функциям. При разработке под Linux вы имеете такую свободу, какую только можете себе представить.

В Линукс полностью открытое ядро, а это означает что вы можете создавать новые операционные системы на основе уже готового ядра.

Разница в том, что на Windows или Mac вы можете создать программу. Она будет великолепной, но все же программой. На Линукс вы можете создать свою операционную систему, а позже для неё можете создать еще и программу.

И конечно же, Линукс можно использовать под разные задачи. По этой причине на различных серверах обычно стоит именно Линукс, так как его можно переделать именно под ваш сервер и под ваши нужды.

Что такое дистрибутивы?

Дистрибутивы это полноценные оболочки или другими словами операционные системы, что были созданы на основе ядра Линукс. Поскольку Линукс предоставляет возможность создания своей ОС, то многие из разработчиков воспользовались этим.

Дистрибутивов существует невероятно большое количество. Среди популярных можно выделить:

  • Ubuntu
  • Mint
  • Elementary
  • Manjaro
  • Debian
  • Kodi
  • Kubuntu
  • и многие другие. Рейтинг и описание можете найти здесь .

Некоторые из них максимально схожи на Виндовс, например, Ubuntu или Mint. Другие же могут предоставлять только командный интерфейс, без графической оболочки.

Кстати, операционная система Андроид также является дистрибутивом, что создан на основе ядра Линукс. Вы только представьте, на основе Линукс был создан весь современный Андроид.

Если говорить про сервера, то там есть свои дистрибутивы. Линукс используется по причине своей безопасности, меньшей нагрузки и возможности полной трансформации под свои нужды.

Windows, к сожалению, всем этим похвастаться не может. Windows – идеальный вариант, если вы не хотите мучаться с установкой и настройкой, а просто хотите получить готовую операционную систему.

Как выбрать верный дистрибутив?

Дистрибутивов действительно очень много и выбирать нужно исходя из ваших потребностей. Проще всего найти различные подборки дистрибутивов в интернете и посмотреть на что они способны и под какие задачи были разработаны.

К примеру, если нам нужен легкий интерфейс для плавного входа в Линукс, то проще всего взять такие дистрибутивы как Ubuntu или же Mint.

В самом начале мы предлагаем вам разобраться в одном из основных дистрибутивов – Ubuntu. Именно его мы будем устанавливать и именно с ним будем работать.

В будущем вы по необходимости сможете установить другие оболочки, а общий принцип работы с ними будет примерно таким же, ведь ядро у всех оболочек остается неизменным.

Информация про Ubuntu

Ubuntu – один из наиболее популярных дистрибутивов. По данным статистики им пользуются около 20 миллионов людей по всему миру. Ubuntu содержит удобный и красивый пользовательский интерфейс.

Следующий фактор может показаться странным для Windows пользователей, но удобства Ubuntu в том, что большинство действий вы можете сделать при помощи мыши, а не при помощи написания команд в терминале.

Ubuntu обладает схожими чертами с Виндовс и Мак одновременно.

Скрипты Bash Shell

Bash скрипт – файл, что содержит список команд для выполнения в ОС Линукс. При помощи Bash скрипта вы можете выполнять управление вашей операционной системой. Сам же Bash Shell является усовершенствованной вариацией командного терминала.

Простой пример

Вам нужно зайти в браузер, найти сайт, проверить на нем данные и позже закрыть браузер. Все это можно сделать через графический интерфейс, но также вы можете автоматизировать эти действия, прописав Bash скрипт и выполнив его.

В ходе курса мы научимся прописывать Bash скрипты, что будут выполнять действия связанные с вашим ПК.

План курса

В курсе мы рассмотрим все тонкости по работе с Linux. Мы научимся её устанавливать, работать с графическим интерфейсом, познакомимся с различными командами из терминала, изучим работу с пакетным менеджером, научимся устанавливать программы внутри Linux и, конечно же, создадим несколько Bash скриптов для управления ПК.

Перед прохождением курса вам не нужно иметь никаких дополнительных знаний. Все необходимое будет изучено в курсе.

С чего начать работу с Linux? Собрали в курс 9 бесплатных материалов для новичков

С чего начать работу с Linux? Собрали в курс 9 бесплатных материалов для новичков

Курс лучше познакомит вас с операционной системой Linux и основами ее использования. Речь пойдет про базовые команды, работу с файлами и потоками, а также доступ к данным.

Курс состоит из девяти материалов, их можно проходить в любом порядке. В основном это инструкции, которые помогут быстро освоить выбранную тему на практике.

С чего советуем начать изучение

Рассказываем, как работать с командной строкой и базовыми командами.

Делимся сочетаниями клавиш, которые упростят и ускорят работу с терминалом.

Разбираемся, как устроены файловые системы Linux, чем они отличаются и в каких случаях применяются.

Больше курсов ищите в Академии Selectel. А чтобы не пропустить новые, подписывайтесь на нашу рассылку: присылаем подборки полезных текстов каждый месяц.

Изучайте также:

  • От ботаника до циника: как поменялся образ айтишника в кино за 60 лет
  • Жизнь за пределами A/В-тестов: 6 быстрых и недорогих способов проверить продуктовые гипотезы
  • Новые фичи для PostgreSQL, оптимизация СDN и другие обновления для быстрой работы

4 комментария

Работа с Linux может казаться сложной, но не забывайте, что и сам Linux начинал свой путь с небольших шагов, и в итоге стал одной из самых влиятельных операционных систем в истории компьютеров.

Если вы не в состоянии самостоятельно найти и освоить инфу, которую тут пытаются втюхать, то разработка не для вас.

ИмФам2, вы очень категоричны 🙂

Понятно, что почти все можно найти и освоить самостоятельно. Спасибо интернету за это!

Мы можем помочь с первым. Например, систематизировать информацию и дать полезные ссылки на кросс-материалы. А вот второе — как и в любых делах — ответственность и желание человека.

Основы Linux (обзор с практическим уклоном)

В последние несколько лет все больше и больше людей ищут возможность войти в ИТ или поглубже изучить Linux, повысив уровень своей квалификации. Вместе с тем полноценных обзоров с практическим уклоном по типу «все и сразу» написано не так уж и много (особенно на русском языке).

Главная задача данной статьи – указать начинающим специалистам направление развития, дать ключевые понятия для дальнейшего изучения и показать несколько простых практических приемов. По этой причине (а еще, безусловно, вследствие недостаточной квалификации автора) теоретический материал достаточно сильно упрощен.

Что такое Linux?

История и определение

В 1969 году в дочернем подразделении компании AT&T – Bell Laboratories – была выпущена операционная система Unix, которая стала основной для большого количества операционных систем того времени. UNIX была проприетарной системой, лицензия на нее стоила порядка 40 000 долларов. Таким образом, позволить себе ее покупку могли только крупные компании. Это послужило толчком для старта в 1983 году проекта GNU – GNU is Not Unix. Его основоположник, Ричард Столлман, объявил целью проекта создание свободно распространяемой операционной системы. Чуть позже Столлманом был написан знаменитый манифест GNU, который стал основой для лицензии GPL (GNU General Public License), актуальной и по сей день. К началу 1990-х годов в рамках проекта GNU было написано большинство компонентов ОС – оболочка bash, компиляторы, отладчик, текстовый редактор и др. Не хватало лишь ядра операционной системы.

В 1991 году Линус Торвальдс, будучи студентом финского университета, увлекся идеей написания ядра операционной системы для своего персонального компьютера с процессором Intel. Вдохновлением и прототипом для будущего Linux стала совместимая с Unix операционная система для персональных компьютеров Minix. Уже в августе 1991 года было написано ядро операционной системы, в нее были портированы оболочка bash и компилятор gсс из проекта GNU. По признанию самого Линуса, изначально это было не более, чем хобби, однако проект оказался весьма востребованным, к нему начали присоединяться разработчики со всего мира. Дополненная массой программ, разработанных в рамках проекта GNU, ОС Linux стала пригодна для практического использования. При этом ядро системы распространялось под лицензией GNU General Public License, что гарантировало свободное распространение кода ядра системы.

Итак, сегодня Linux (или GNU/Linux) – семейство Unix-подобных операционных систем на базе ядра Linux, включающих тот или иной набор утилит и программ проекта GNU. Linux-системы распространяются в виде различных дистрибутивов, имеющих свой набор системных и прикладных компонентов (как свободных, так и проприетарных).

Серверные дистрибутивы

Дистрибутив Linux — это операционная система, созданная на основе ядра Linux, которая включает в себя набор библиотек и утилит (пакетов), разработанных в рамках проекта GNU, а также систему управления пакетами (менеджер пакетов). В настоящее время существует более 500 различных дистрибутивов, разрабатываемых как при коммерческой поддержке (Red Hat / Fedora, SLED / OpenSUSE, Ubuntu и др.), так и исключительно усилиями добровольцев (Debian, Slackware, Gentoo, ArchLinux и др.).

Дистрибутивы делятся на несколько типов в зависимости от базового дистрибутива и системы управления пакетами. Вот несколько примеров наиболее популярных серверных дистрибутивов двух типов:

  • RPM-based (используют формат пакетов .rpm)
    RedHat Enterprise Linux, CentOS, Fedora
  • DEB-based (используют формат пакетов .deb)
    Debian, Ubuntu, Astra Linux

Стоит отметить, что существует великое множество различных дистрибутивов на любой вкус и цвет. Их невозможно даже сосчитать, так как практически каждый представитель сообщества может собрать свой собственный дистрибутив на основе ядра Linux.

Работа с Linux

Загрузка

Алгоритм включения сервера и загрузки Linux в большинстве случаев выглядит следующим образом:

  • BIOS / UEFI → MBR / GPT
    Выполняется код, заложенный производителем аппаратного обеспечения. Этот код проводит тестирование системы POST (Power On Self Test) и передает управление загрузчику в MBR (Master Boot Record) / GPT (GUID Partition Table)
  • MBR / GPT → GRUB2 (существуют и другие загрузчики)
    Загрузчик из MBR / GPT очень простой – он способен только найти на диске и запустить следующий загрузчик. Как правило это GRUB2, но существуют и другие загрузчики, например LILO (в настоящее время практически не используется)
  • GRUB2 → Kernel
    GRUB2 расположен на разделе жесткого диска в каталоге /boot. GRUB2 загружает ядро Linux (vmlinuz)
  • Kernel → Init
    Ядро запускает процесс инициализации операционной системы. Как правило это SystemD, но существуют и другие системы инициализации, например SystemV (в настоящее время практически не используется). Процесс инициализации запускает все остальные процессы в системе

Подключение

Командная оболочка

Подключиться к Linux для управления можно в интерфейсе командной строки (command-line interface, CLI) или в графическом интерфейсе (graphical user interface, GUI). При работе с серверной инфраструктурой в подавляющем числе случаев GUI отсутствует и взаимодействие с сервером осуществляется в CLI. При входе пользователя на сервер в CLI запускается командная оболочка (в GUI командную оболочку можно запустить через эмулятор, например Terminal). Командная оболочка (shell) – это программа, которая принимает команды с клавиатуры и передает их операционной системе для выполнения. Наиболее распространенной командной оболочкой в Linux является GNU bash (Bourne Again SHell). bash основывается на другой легковесной оболочке-предшественнике – sh (Bourne sh), созданной Стефеном Борном.

Команды можно выполнять с помощью командной строки, указав имя двоичного (бинарного, bin) исполняемого файла или сценария. По умолчанию в Linux много команд, которые позволяют перемещаться по файловой системе, устанавливать ПО, конфигурировать его и выполнять другие действия. Каждая запущенная команда является отдельным процессом. Важно отметить, что в Linux (в отличие от Windows) почти всегда учитывается регистр, включая имена файлов и каталогов, команды, аргументы и опции.

SSH

Подключаться к Linux и работать с командной оболочкой можно локально (например включив ПК дома или подойдя к серверу в центре обработки данных), однако гораздо чаще работать с системой требуется удаленно. Для этого необходимо настроить SSH и подключаться через него. SSH (Secure SHell) – это протокол, позволяющий производить удаленное управление операционной системой и туннелирование TCP-соединений (например, для копирования файлов). SSH основан на клиент-серверной архитектуре, которая организует защищенное (зашифрованное) соединение поверх небезопасных каналов связи. Серверная часть устанавливается на удаленном сервере, а клиентская на компьютере, с которого осуществляется подключение.

Существует много клиентов для удаленного подключения к серверу по SSH. Вот несколько примеров для различных операционных систем:

  • Windows
    PuTTY – выбор новичка, PowerShell (команда ssh), Xshell – выбор автора, MobaXterm, mRemoteNG
  • Linux
    Terminal (команда ssh) – выбор новичка и автора, Asbru Connection Manager
  • MacOS
    Terminal (команда ssh) – выбор новичка и автора, Core Shell
  • SSH
  • Как подключиться по SSH
  • Лучшие SSH клиенты для Windows, Linux и MacOS

Установка программ (утилит) пакетным менеджером

Зачем нужны пакетные менеджеры?

На заре развития Linux установить приложение (утилиту) можно было только путем скачивания исходного кода программы и компиляции. Это не практично и не слишком удобно для пользователей, поэтому были разработаны пакетные менеджеры. Установка приложений в них производится из пакетов – архивов с файлами скомпилированной программы. Большинство популярных дистрибутивов Linux содержат пакетные менеджеры, способные устанавливать любое программное обеспечение. Пакетные менеджеры имеют свой список репозиториев – серверов с базой пакетов. Во время установки алгоритм менеджера находит необходимый пакет в базе и производит автоматическое скачивание, установку и настройку.

Существует несколько форматов пакетов, однако наибольшее распространение получили .deb и .rpm. Рассмотрим операционные системы и менеджеры пакетов для данных форматов:

  • DEB (.deb)
    ОС – DEB-based, например Debian, Ubuntu, AstraLinux
    Система управления пакетами – DPKG (работает только с локальными пакетами)
    Пакетный менеджер – apt
  • RPM (.rpm)
    ОС – RPM-based, например RedHat Enterprise Linux, Fedora, CentOS
    Система управления пакетами – RPM (работает только с локальными пакетами)
    Пакетный менеджер – yum (в последних дистрибутивах заменен на dnf)
Практика

На практике пользователю необходимо уметь взаимодействовать с пакетными менеджерами – устанавливать и удалять пакеты.

Ниже приведены несколько примеров команд:

# руководство (справочная информация) man # просмотр справочной информации по утилите --help # просмотр справочной информации по утилите # менеджер пакетов apt (.deb) sudo apt install nano # установка пакета sudo apt remove nano # удаление пакета sudo apt autoclean # удаление кэша пакетов # менеджер пакетов yum (.rpm) - для dnf команды полностью аналогичны sudo yum install nano # установка пакета sudo yum remove nano # удаление пакета sudo yum clean all # удаление кэша пакетов

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Структура файловой системы и работа с файлами

Типы файлов

Все объекты в Linux являются файлами. Существуют следующие типы файлов:

  • Обычные файлы
    Символьные и двоичные данные (текст, картинки, программы и др.)
  • Каталог (директория) d
    Список ссылок на файлы или другие каталоги
  • Символьные ссылки l
    Ссылки на другие файлы по имени
  • Блочные устройства b, символьные устройства c
    Интерфейсы для взаимодействия с аппаратным обеспечением (диски, терминалы, клавиатуры, принтеры и др.). Когда происходит обращение к файлу устройства, ядро операционной системы передает запрос драйверу этого устройства
  • Сокеты s и каналы p
    Интерфейсы для взаимодействия процессов
Структура файловой системы

Структура файловой системы представляет собой дерево, корнем которой является каталог /.

Рассмотрим подробно структуру и назначение каталогов:

  • /bin (binaries) – исполняемые файлы самых необходимых утилит. Может быть символьной ссылкой на /usr/bin
  • /boot – файлы, необходимые для самого первого этапа загрузки – загрузки ядра (и обычно само ядро)
  • /dev (devices) – блочные и символьные файлы устройств (диски, терминалы, клавиатуры, принтеры и др.)
  • /etc (etcetera) – конфигурационные файлы системы и различных программ
  • /home – домашние каталоги пользователей для хранения «личных» файлов
  • /lib (libraries) – файлы библиотек (стандартных функций, необходимых многим программам), необходимых для работы утилит. Может быть символьной ссылкой на /usr/bin
  • /mnt (mount) – каталог для подключения файловых систем (съемных носителей и др.)
  • /opt (optional) – каталог для дополнительных программ (проприетарных драйверов, агентов мониторинга и др.)
  • /proc (process) – файлы в оперативной памяти, в которых содержится информация о выполняемых в системе процессах
  • /root – домашний каталог пользователя root
  • /sbin (system binaries) – файлы системных утилит, необходимые для загрузки, резервного копирования и восстановления системы. Может быть символьной ссылкой на /usr/sbin
  • /sys (system) – виртуальная файловая система sysfs, которая содержит информацию об аппаратном обеспечении (ЦПУ, ОЗУ, дисках, сетевых устройствах), драйверах, ядре системы и др.
  • /tmp – каталог для временных файлов, обычно зачищается при каждой загрузке системы
  • /usr – пользовательский каталог, который содержит каталоги исполняемых файлов и конфигурационных файлов
  • /var (variable) – файлы, создаваемые или используемые различными программами (логи, очереди, идентификаторы процессов, БД и др.)
Права доступа

В Linux права доступа к файлам (в том числе к каталогам) задаются для трех видов пользователей – владельца, группы владельца и остальных. Также есть три типа доступа к файлу – чтение r (Read), запись w (Write) и исполнение x (eXecution), которые задаются для каждого из видов пользователей. Прочерк означает отсутствие доступа.

Таким образом, права доступа к файлу выглядят следующим образом:

  • права для владельца (u, user) – read, write, execution
  • права для группы владельца (g, group) – read, write, execution
  • права для остальных пользователей (o, other) – read, write, execution

Пример: rwx r— — означает, что у владельца есть права на все, у группы владельца доступ только на чтение, а у остальных доступа нет. В двоичной системе счисления эти права выглядят как три группы цифр – 111 100 000, что равносильно трем цифрам 7 4 0 в восьмеричной и десятичной системах счисления.

  • Владельцы файлов и папок в Linux
  • Команда chmod в Linux
Практика

На практике пользователю необходимо осуществлять навигацию по системе, просматривать, создавать, редактировать и удалять файлы, настраивать права доступа.

Ниже приведены несколько примеров наиболее часто используемых команд:

# руководство (справочная информация) man # просмотр справочной информации по утилите --help # просмотр справочной информации по утилите # навигация ls -la # просмотр содержимого каталога (в том числе прав доступа) cd # переход в каталог # каталоги mkdir # создание каталога rmdir # удаление пустого каталога rm -rf # удаление каталога с файлами # файлы cat # вывод файла в консоль less # постраничный вывод файла tail # вывод последних строк («хвоста») файла vi # редактиврование файла текстовым редактором vi nano # редактирование файла текстовым редактором nano cp  # копирование файла в каталог mv  # перемещение файла в каталог (для переименования переместите файл в тот же каталог) rm # удаление файла rm -rf /* # удаление всех файлов в каталоге # права доступа chown  # установить пользователя владельцем каталога chown :  # установить владельца и группу владельца каталога chmod 644 # установить права доступа rw- r-- r-- (чтение и запись для владельца, чтение для группы владельца, чтение для остальных пользователей) сhmod 740 # установить права доступа rwx r-- --- (чтение, запись и исполнение для владельца, чтение для группы владельца) chmod u+w # добавить владельцу право на запись файла

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Процессы и потребление ресурсов сервера

Процессы

Если предельно упростить, то процесс – это любая программа, которая выполняется в системе. В ходе работы с системой может быть запущено множество программ, которые, в свою очередь, могут запустить множество процессов. Простейший пример процесса – командная оболочка bash. Каждому процессу в Linux присваивается уникальный идентификатор процесса (PID), который используется ядром для управления процессом до завершения программы или команды, с которой он связан.

Процесс может находиться в следующих статусах:

  • Выполнение (R, Running)
    Выполнение или ожидание ЦПУ для выполнения
  • Сон (S, Sleep)
    Прерываемое программно ожидание
  • Непрерываемый сон (D, Direct)
    Ожидание «прямого» сигнала от аппаратной части для прерывания
  • Приостановлен (T, Tracing)
    Отладка
  • Зомби (Z, Zombie)
    Выполнение завершено, однако ресурсы не освобождены

Почти любой процесс (кроме процесса в статусе D) может быть принудительно прерван администратором в случае необходимости («убит»). Это не всегда безопасно, однако возможно.

Запущенные процессы требуют использования аппаратных ресурсов сервера – ЦПУ, ОЗУ, дисков, сетевых интерфейсов.

Практика

На практике пользователю необходимо просматривать списки процессов и останавливать процессы, а также просматривать имеющиеся и потребляемые ресурсы сервера в системе.

Ниже приведены несколько примеров наиболее часто используемых команд:

# руководство (справочная информация) man # просмотр справочной информации по утилите --help # просмотр справочной информации по утилите # процессы top sudo ps aux sudo kill -9 # убийство процесса по PID sudo killall -s 9 # убийство всех процессов по имени # утилиты для мониторинга использования ресурсов htop # использование ресурсов по процессам (может потребоваться установка пакета htop) nmon # использование процессора по ядрам, памяти, дисков и др. (может потребоваться установка пакета nmon) iostat # использование процессора в среднем по ядрам и чтение/запись по дискам # ЦПУ lscpu # общая информация cat /proc/cpuinfo # подробная информация # ОЗУ cat /proc/meminfo # общая информация и потребление free -h # удобное представление на основе данных из файла meminfo ps aux --sort -rss # использование памяти по процессам # диски lsblk # общая информация df -h # просмотр занятного места по разделам du -сh # просмотр занятого места в каталоге # сеть /sys/class/net//speed # просмотр максимальной скорости интерфейса

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Программный комплекс systemd

Зачем нужен systemd?

SystemD – это программный комплекс, состоящий из системных компонентов Linux. Основным компонентом является система инициализации системы SystemD, которая пришла на смену SystemV в большинстве современных дистрибутивов. Ядро Linux запускает процесс systemd, который, в свою очередь, запускает все остальные процессы системы.

SystemD предоставляет следующий функционал:

  • Запуск служб при старте системы (по возможности параллельно) по различным таргетам (target, аналог уровней загрузки в SystemV)
    Обеспечивается обратная совместимость с системами инициализации SystemV и LSB
  • Контроль состояния запущенных служб
  • Управление устройствами, входом в систему, сетевыми подключениями, ведение журнала событий
  • Интерфейсы для реализации функциональных возможностей ядра – cgroups, autofs, kdbus
  • Набор утилит для управления системой – systemctl, journalctl и др.

Что такое systemd unit?

SystemD Unit – это обычный текстовый файл в стиле ini, который декларативно описывает информацию о службах .service, устройствах .device, целях запуска .target и других типах модулей systemd.

Описание юнита состоих из нескольких секций:

  • Unit
    Description (краткое описание), After (ожидание запуска), Requires (обязательная зависимость) и др.
  • Service
    Type (тип) – по умолчанию Simple, ExecStart (команда для запуска), ExecStop (команда для остановки) и др.
  • Install
    WantedBy (таргет или уровень запуска, на котором юнит должен запуститься)

Файлы systemd unit располагаются в следующих каталогах:

  • /etc/systemd/system – юниты, создаваемые администраторами
  • /usr/lib/systemd/system – юниты из установленых пакетов
  • /run/systemd/system – юниты, создаваемые во время работы системы (в runtime)

Редактировать и создавать юниты можно с помощью текстового редактора (например vi или nano).

  • Применение systemd: только самое главное
  • Понимание systemd юнитов
  • Примеры systemd unit – NGINX, Apache
Практика

На практике пользователю необходимо просматривать различные systemd unit, просматривать их содержимое и управлять сервисами, а также читать журналы логов.

Ниже приведены несколько примеров наиболее часто используемых команд:

# руководство (справочная информация) man # просмотр справочной информации по утилите --help # просмотр справочной информации по утилите # просмотр юнитов systemctl # список юнитов (это псевдоним команды systemctl list-units) systemctl --type=service # юниты типа сервисы systemct | grep # юниты, содержащие ключевое слово (полезно для быстрого поиска) systemctl cat # описание юнита # управление юнитами systemctl status # статус (состояние) юнита sudo systemctl daemon-reload # перезагрузка конфигурационных файлов в systemd sudo systemctl enable # включение сервиса в автозагрузку sudo systemctl disable # отключение сервиса из автозагрузки sudo systemctl start # запуск sudo systemctl stop # остановка # журналы логов journalctl -u # чтение логов по юниту journalctl -u --since today # чтение логов по юниту со смены дня 

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Сеть

На практике пользователю необходимо уметь просматривать сетевые настройки сервера, а также уметь проводить простейшую диагностику сетевых проблем.

Ниже приведены несколько примеров наиболее часто используемых команд:

# руководство (справочная информация) man # просмотр справочной информации по утилите --help # просмотр справочной информации по утилите # просмотр сетевых настроек сервера ip a # IP адреса ip n # ARP таблица cat /etc/resolv.conf # конфигурация DNS sudo netstat -tulpn # открытые порты sudo ss -tulpn # открытые порты (молодежный вариант) # диагностика сетевых проблем nslookup # проверка разрешения DNS имени ping # отправка ICMP пакетов до хоста traceroute # трассировка до хоста UDP пакетами telnet  # проверка доступности TCP порта на хосте nmap # сетевое сканирование хоста nmap -p T:  # проверка доступности TCP порта на хосте (молодежный вариант) nmap -p U:  # проверка доступности UDP порта на хосте (молодежный вариант)

При необходимости уточняйте описание утилит и ключей выполнения в Интернете или в руководстве man.

Все статьи серии:

  1. Основы Linux (обзор с практическим уклоном)
  2. Основы виртуализации (обзор)
  3. Основы контейнеризации (обзор Docker и Podman)
  4. Основы мониторинга (обзор Prometheus и Grafana)

Linux за 30 минут. Руководство по выбору и использованию Linux для новичков

Со­вер­шенно не важ­но, какую опе­раци­онку ты пред­почита­ешь иметь на рабочем компь­юте­ре, — Linux сегод­ня бук­валь­но пов­сюду: на сер­верах, на желез­ках вро­де Raspberry Pi, на умных устрой­ствах, на компь­юте­рах в госуч­режде­ниях. Да что там, даже в Windows теперь мож­но запус­кать Linux, что­бы лег­че было, к при­меру, тес­тировать сер­верный софт. Хакеру же ори­енти­ровать­ся в Linux прос­то необ­ходимо.

Ог­ромное количес­тво хакер­ско­го соф­та работа­ет толь­ко на Linux и соб­рано в спе­циали­зиро­ван­ных дис­три­бути­вах вро­де Kali. К тому же при пен­тесте ты час­то будешь стал­кивать­ся с сис­темами на Linux и дол­жен уметь с ними обра­щать­ся. Да и прос­то полез­но иметь опыт работы с этой мощ­ной, абсо­лют­но бес­плат­ной сис­темой. В жиз­ни при­годит­ся, поверь!

В этой статье мы попыта­емся рас­ска­зать все, что сами хотели бы знать, ког­да начина­ли инте­ресо­вать­ся «Линук­сом» мно­го лет назад. Это и теоре­тичес­кие све­дения, которые помогут ори­енти­ровать­ся, и впол­не прак­тичные советы.

Важное предупреждение

По уров­ню слож­ности это не впол­не харак­терная для «Хакера» статья — она рас­счи­тана на сов­сем‑сов­сем новых поль­зовате­лей. Мысль о ней появи­лась, ког­да мы ста­ли ком­поновать под­борку матери­алов об исполь­зовании Linux и обна­ружи­ли, что у нас нет ничего, что подош­ло бы в качес­тве самого начала. А если и есть, то пок­рыто тол­сты­ми мха­ми.

Ес­ли ты про­тив таких ста­тей в «Хакере», можешь, конеч­но, отме­тить­ся в ком­мента­риях, но, пра­во сло­во, луч­ше иди почитай про экс­плу­ата­цию ядра или про то, как писать минима­лис­тичный бэк‑шелл на ассем­бле­ре. Бла­го таких ста­тей у нас боль­шинс­тво и менять в этом пла­не мы ничего не собира­емся.

Ес­ли же тема кажет­ся тебе в самый раз, то прис­тегивай­ся — наш звез­долет отправ­ляет­ся, что­бы про­нес­тись по осно­вам Linux со сверх­све­товой ско­ростью.

Какой бывает Linux

Пер­вое, с чем стал­кива­ется человек, жела­ющий уста­новить Linux, — это огромное раз­нооб­разие дис­три­бути­вов. Все эти наз­вания прос­то невоз­можно упом­нить, но в реаль­нос­ти и не нуж­но.

Три основных семей­ства дис­три­бути­вов, о которых нуж­но знать в пер­вую оче­редь, — это Debian, Red Hat и Arch. Еще мож­но вспом­нить SUSE, Mandriva и Gentoo, но день­ки их сла­вы уже позади, да прос­тят нас их поль­зовате­ли!

info

Chrome OS — это тоже внут­ри впол­не нас­тоящий Linux, и в новых вер­сиях под­держи­вает­ся запуск прог­рамм для Linux. Но в один ряд с дру­гими дис­три­бути­вами эту ОС все же не пос­тавишь.

Из семей­ства ­Debian в пер­вую оче­редь сто­ит обра­тить вни­мание на Ubuntu. Это и есть самый оче­вид­ный выбор, если ты раз­думыва­ешь, с чего начать. Ком­пания Canonical, сто­ящая за Ubuntu, прик­ладыва­ет огромные силы для того, что­бы этот дис­три­бутив хорошо работал и был дру­желю­бен к поль­зовате­лю. Для это­го дис­три­бути­ва име­ется широчай­ший выбор ста­биль­но работа­ющих прог­рамм — ты точ­но не будешь испы­тывать в них недос­татка.

Свежеустановленный UbuntuСтандартный набор приложений в Ununtu

К тому же у Ubuntu огромное сооб­щес­тво, что зна­читель­но упро­щает решение проб­лем: в 99% слу­чаев ты будешь не пер­вый, кто испы­тыва­ет ту или иную слож­ность. Прос­то копируй сооб­щение об ошиб­ке, и навер­няка най­дешь вет­ку форума, где более опыт­ные товари­щи объ­ясня­ют дру­гим пос­тра­дав­шим, как с этим спра­вить­ся.

Есть и дру­гие популяр­ные дис­три­бути­вы, осно­ван­ные на Debian, — к при­меру, Raspberry Pi OS, MX Linux или Kali Linux. А на Ubuntu базиру­ются Linux Mint, elementary OS и мно­гие дру­гие. Кста­ти, Mint и elementary тоже неп­лохие вари­анты для нович­ков.

Ста­вить Kali в качес­тве пер­вой сис­темы обыч­но не рекомен­дуют: этот узкоспе­циали­зиро­ван­ный хакер­ский дис­три­бутив пло­хо прис­пособ­лен для пов­седнев­ной работы, и уста­нав­ливать его пред­полага­ется в вир­туал­ку или в качес­тве вто­рой ОС. К тому же он под завяз­ку забит хак­тулза­ми вмес­то обыч­ных при­ложе­ний, что будет сби­вать с тол­ку. Но если ты ста­вишь Linux спе­циаль­но, что­бы заполу­чить все это богатс­тво, то кто мы такие, что­бы тебя оста­нав­ливать?

Что до самого Debian, то его глав­ная фиш­ка — это лицен­зион­ная чис­тота. Раз­работ­чики вни­матель­но сле­дят за тем, что­бы в него не попало ни строч­ки кода, который рас­простра­няет­ся не по сво­бод­ной лицен­зии (что, может быть, и пох­валь­но с точ­ки зре­ния иде­оло­гии, но ког­да ты хочешь осво­ить­ся с Linux, ско­рее все­го, обер­нется раз­ного рода слож­ностя­ми).

К семей­ству дис­три­бути­вов Red Hat отно­сят­ся в пер­вую оче­редь Fedora, Red Hat Enterprise Linux (RHEL) и Rocky Linux. На обыч­ный ПК есть смысл ста­вить «Федору», тог­да как RHEL — это ком­мерчес­кое решение для сер­веров, а Rocky Linux — его неком­мерчес­кий клон, соз­данный сооб­щес­твом.

Fedora Linux

И наконец, Arch — это край­не инте­рес­ный «гиков­ский» дис­три­бутив, который ты можешь сам соб­рать по кир­пичикам и нас­тро­ить как тебе захочет­ся. Одна­ко нырять в это без пред­варитель­ных поз­наний в Linux не совету­ем. Решая проб­лемы, ты, конеч­но, при­обре­тешь мно­го цен­ных зна­ний, но это далеко не самый прос­той путь, и луч­ше отло­жить хож­дение по нему на потом.

У Arch есть и менее суровые вари­ации — Manjaro и EndeavourOS. В обе­их хотя бы при­сутс­тву­ют заранее нас­тро­енные и под­готов­ленные к работе окру­жения, но тоже аске­тич­ные. С дру­гой сто­роны, отсутс­твие необуз­данно­го раз­нооб­разия может быть плю­сом при пер­вом зна­комс­тве, так что начинать с Manjaro — не такая пло­хая идея. Осо­бен­но если ты пла­ниру­ешь ста­вить Linux на сла­бый компь­ютер.

Manjaro для ARM

Not Unix

В чем отли­чие Linux от Unix? Если очень‑очень упростить, то мож­но ска­зать, что Unix — это пре­док Linux. Более слож­ный и раз­верну­тый ответ тре­бует нем­ного углу­бить­ся в исто­рию.

В семиде­сятые годы Ричард Стол­лман при­думал кло­ниро­вать ком­мерчес­кий и по тем вре­менам дорогос­тоящий Unix и соз­дать свою опе­раци­онку, которую он наз­вал GNU is not Unix или прос­то GNU. Стол­лман и ком­пания перепи­сали все ком­понен­ты Unix и опуб­ликова­ли их под при­думан­ной ими «вирус­ной» лицен­зией GPL.

Из­началь­но сло­вом Linux называ­ли толь­ко соз­данное Линусом Тор­валь­дсом ядро. Но наз­вание Linux и мас­кот‑пин­гвин быс­тро при­жились, и ими теперь обоз­нача­ют всю ОС — нес­мотря на воз­ражения Стол­лма­на и прось­бы писать толь­ко GNU/Linux.

Linux в эпо­ху интерне­та стал быс­тро набирать популяр­ность, и ком­мерчес­ким вари­антам Unix со вре­менем прос­то не оста­лось мес­та. Тем не менее до сих пор живы его потом­ки — опе­раци­онные сис­темы FreeBSD и OpenBSD, которые теперь бес­плат­ны и мно­гое заимс­тву­ют из сов­ремен­ного «Линук­са». Кста­ти, на FreeBSD осно­ваны macOS и iOS.

По­луча­ется, что выбор дис­три­бути­ва — это в пер­вую оче­редь выбор под­хода и даже иде­оло­гии. Одна­ко более при­зем­ленным ори­енти­ром обыч­но слу­жит набор основных ком­понен­тов, из которых стро­ятся дис­тры. Давай обсу­дим глав­ные из них.

Ядро

Яд­ро, хоть и кри­тичес­ки важ­но для работы сис­темы, осо­бо не инте­рес­но с точ­ки зре­ния поль­зовате­ля — вза­имо­дей­ство­вать с ним нап­рямую тебе вряд ли при­дет­ся, пока ты не ста­нешь нас­тоящим гуру.

Воз­можно, ты час­то слы­шал про «сбор­ку ядра» и можешь даже самос­тоятель­но поп­робовать сде­лать это. Пос­коль­ку ядро Linux монолит­ное, в него дол­жна вхо­дить под­дер­жка мно­жес­тва вещей, которые каса­ются всех аспектов работы компь­юте­ра. Соот­ветс­твен­но, перед сбор­кой мож­но и нуж­но задать кучу вся­ких нас­тро­ек, но ничего осо­бен­но увле­катель­ного в этом, поверь, нет, хотя про­цесс край­не поз­наватель­ный.

В сис­теме может одновре­мен­но при­сутс­тво­вать сколь­ко угод­но ядер, а какое имен­но будет исполь­зовать­ся, ты можешь выб­рать в заг­рузчи­ке. Апгрейд ядра до более новой вер­сии — совер­шенно рутин­ное дело в Linux и обыч­но про­исхо­дит авто­мати­чес­ки.

Пакетный менеджер

Лю­бой Linux сос­тоит из тысяч мел­ких ком­понен­тов — прог­рамм, биб­лиотек и ресур­сов (нап­ример, фай­лов кон­фигура­ции, наборов ико­нок и так далее). Рас­простра­няют­ся они в виде пакетов (package).

Па­кет­ный менед­жер — это спе­циаль­ная прог­рамма, которая выпол­няет уста­нов­ку, нас­трой­ку, уда­ление, а так­же обновле­ние как отдель­ных при­ложе­ний, так и всей сис­темы в целом или ее ком­понен­тов.

Очень час­то один пакет тре­бует для работы наличия дру­гих, и сле­дить за эти­ми зависи­мос­тями вруч­ную на сов­ремен­ной сис­теме невоз­можно. Поэто­му осно­ва каж­дого дис­три­бути­ва — это пакет­ный менед­жер, который рулит уста­нов­кой и обновле­нием соф­та. В дис­три­бути­вах, осно­ван­ных на Debian, он называ­ется APT, в Red Hat — DNF, а в Arch — pacman.

Па­кеты менед­жер берет из репози­тория — боль­шого скла­да, куда соз­датели дис­три­бути­ва заг­ружа­ют их. Репози­тори­ев зачас­тую мож­но под­клю­чить сра­зу нес­коль­ко. Нап­ример, в Ubuntu есть четыре основных: Main (под­держи­ваемый раз­работ­чиками), Universe (под­держи­ваемый сооб­щес­твом), Restricted (с проп­риетар­ным ПО) и Multiverse (с ПО, на которое дей­ству­ют нес­вобод­ные лицен­зии).

Пос­коль­ку вско­ре пос­ле уста­нов­ки Linux ты обна­ружишь необ­ходимость в драй­верах для железа, допол­нитель­ных шриф­тах, кодеках и тому подоб­ных вещах, ско­рее все­го, понадо­бит­ся раз­решить сис­теме дос­туп к запят­нанным ком­мерци­ей репози­тори­ям. В Ubuntu это дела­ется в меню «Прог­раммы и обновле­ния».

Графическая система

Да­леко не каж­дый Linux снаб­жен гра­фичес­кой сис­темой или вооб­ще нуж­дает­ся в ней — очень мно­гие дей­ствия здесь мож­но делать и из коман­дной стро­ки. Одна­ко сов­ремен­ный рабочий стол — это все же икон­ки и окош­ки.

Что­бы работать с гра­фикой, в Linux дол­жны при­сутс­тво­вать сер­вер дис­плея X.Org (тра­дици­онный вари­ант) либо новомод­ный ком­позитор Wayland, на который сей­час перехо­дят наибо­лее передо­вые дис­три­бути­вы. Плюс тре­бует­ся окон­ный менед­жер — прог­рамма, которая отве­чает за то, как выг­лядят и работа­ют эле­мен­ты интерфей­са.

Впро­чем, это всё доволь­но низ­коуров­невые под­робнос­ти, нырять в которые с ходу не обя­затель­но. Куда ско­рее тебе при­дет­ся задумать­ся о выборе рабочей сре­ды (Desktop Environment, DE). Это совокуп­ность окон­ного менед­жера и раз­ного рода прог­рамм, мел­ких (нап­ример, рису­ющих раз­ные панели, рабочий стол, вид­жеты) и круп­ных — вро­де фай­лового менед­жера. Сюда же обыч­но вхо­дит и набор базово­го соф­та: кален­дарь, поч­товик и про­чее в таком духе.

Са­мые извес­тные окон­ные сре­ды — это GNOME и KDE. Но в реаль­нос­ти их спи­сок гораз­до длин­нее. Любите­ли минима­лиз­ма могут прис­мотреть­ся к Xfce или LXDE, а Ratpoison, dwm, i3 и xmonad пре­дос­тавля­ют сре­ду с неперек­рыва­ющи­мися окна­ми, что некото­рые находят удоб­ным.

А еще от GNOME отва­лились про­екты MATE и Cinnamon — их раз­работ­чикам не пон­равил­ся интерфейс GNOME 3, и они про­дол­жили раз­вивать вто­рую вет­ку. А в elementary OS исполь­зует­ся своя сре­да под наз­вани­ем Pantheon, которую не встре­тишь боль­ше ниг­де. В общем, раз­нооб­разие огромно!

Соз­датели дис­три­бути­вов, в которые вхо­дит гра­фичес­кая сре­да, обыч­но выбира­ют одну или нес­коль­ко сред, которые будут под­держи­вать офи­циаль­но. Но при этом тебе нич­то не меша­ет поменять DE или уста­новить одновре­мен­но боль­ше одной, что­бы перек­лючать­ся меж­ду ними или исполь­зовать прог­раммы одной сре­ды из дру­гой. Про­буй, экспе­римен­тируй, и сам пой­мешь, что тебе бли­же.

Командный интерпретатор

Поль­зовате­ли Windows при­вык­ли к тому, что в этой опе­раци­онной сис­теме име­ется стан­дар­тный интер­пре­татор команд cmd. exe , который при­нято называть коман­дной стро­кой. В пос­ледних вер­сиях вин­ды его орга­нич­но допол­нил PowerShell, одна­ко эти­ми дву­мя сре­дами ассорти­мент коман­дных интер­пре­тато­ров в Windows исчерпы­вает­ся.

В Linux коман­дных интер­пре­тато­ров сущес­тву­ет мно­жес­тво, и, если для Windows они лишь вспо­мога­тель­ное средс­тво адми­нис­три­рова­ния, здесь это один из основных и очень мощ­ных инс­тру­мен­тов работы с сис­темой.

Собс­твен­но, сама исто­рия Linux началась имен­но с коман­дной стро­ки, точ­нее тер­минала или даже телетай­па. Гра­фичес­кий интерфейс к нему при­дела­ли уже зна­читель­но поз­же. Имен­но поэто­му коман­дную стро­ку в Linux час­то называ­ют «эму­лятор тер­минала», а про­цес­сы с ними носят пре­фикс tty (teletype).

Как ты зна­ешь, с исполь­зовани­ем команд в Windows мож­но писать скрип­ты, авто­мати­зиру­ющие какие‑либо дей­ствия: пакет­ные фай­лы (batch files) были в ходу еще со вре­мен MS-DOS, а PowerShell замет­но рас­ширил и углу­бил эту тех­нологию. В Linux мож­но делать то же самое: соб­ранный в файл набор команд интер­пре­тато­ра может работать как слож­ная прог­рамма, а сами коман­ды явля­ются по боль­шому сче­ту язы­ком прог­рамми­рова­ния.

На­боры команд, сох­ранен­ные одним фай­лом, при­нято называть сце­нари­ями или скрип­тами. Все скрип­ты в Linux начина­ются с сим­волов #! (это сочета­ние называ­ется «шебанг») и пути к интер­пре­тато­ру — коман­де, которая будет исполнять скрипт.

Стан­дар­тным коман­дным интер­пре­тато­ром в Linux явля­ется bash — обновлен­ная и модер­низиро­ван­ная вер­сия коман­дной обо­лоч­ки Bourne shell, которая была изоб­ретена Сти­веном Бор­ном в 1978 году и исполь­зовалась еще в клас­сичес­ком Unix.

Прож­женные линук­соиды пред­почита­ют ста­вить вмес­то bash более прод­винутый интер­пре­татор — Z shell (ZSH), обратно сов­мести­мый с bash, но име­ющий по срав­нению с ним мно­жес­тво улуч­шений. Для этой обо­лоч­ки сооб­щес­твом был раз­работан спе­циаль­ный откры­тый и бес­плат­ный фрей­мворк Oh My ZSH, который содер­жит мно­жес­тво пла­гинов для авто­мати­зации работы с коман­дами и скрип­тами. Как минимум Oh My ZSH поз­воля­ет исполь­зовать кра­сивые темы офор­мле­ния окна коман­дной стро­ки, бла­года­ря которым окру­жающие точ­но соч­тут тебя гени­аль­ным хакером.

info

Пре­дуп­редим о проб­леме, с которой момен­таль­но стал­кива­ется каж­дый новый поль­зователь Linux. Если ты зай­дешь в какой‑то каталог и попыта­ешь­ся написать наз­вание исполня­емо­го фай­ла, что­бы запус­тить его, то ничего не получит­ся. Почему?

При­чина в том, что интер­пре­татор ищет фай­лы толь­ко в катало­гах, которые ука­заны в перемен­ной окру­жения $PATH . То есть тебе нуж­но либо задать пол­ный путь к исполня­емо­му фай­лу, либо явно ука­зать на текущий каталог. Как ты зна­ешь, родитель­ский каталог отме­чает­ся дву­мя точ­ками ( .. / ), а что­бы ука­зать на текущий, нуж­но писать . / . То есть вмес­то program пиши ./ program , и все получит­ся!

И еще один очень важ­ный момент. В Windows тип фай­ла опре­деля­ется его рас­ширени­ем — в зависи­мос­ти от него коман­дный интер­пре­татор и обо­лоч­ка реша­ют, как они будут обра­баты­вать файл. В Linux все устро­ено нем­ного по‑дру­гому: у bash пол­ностью отсутс­тву­ет какое‑либо ува­жение к рас­ширени­ям фай­лов. Исполня­емый файл отли­чает­ся от обыч­ного не рас­ширени­ем, а наличи­ем пра­ва на его исполне­ние: если оно есть, сис­тема счи­тает такой файл прог­раммой (или скрип­том) и пыта­ется выпол­нить. О пра­вах на фай­лы мы под­робнее погово­рим чуть даль­ше в соот­ветс­тву­ющем раз­деле.

Домашний каталог и скрытые файлы

Пос­коль­ку Linux изна­чаль­но задумы­вал­ся как мно­гополь­зователь­ская опе­раци­онная сис­тема, все пути к «домаш­ним» пап­кам, перемен­ные окру­жения, прог­раммы, которые запус­кают­ся при откры­тии тер­минала, и дру­гие нас­трой­ки зада­ются в про­филе поль­зовате­ля. У раз­ных юзе­ров они, соот­ветс­твен­но, раз­ные. Бла­года­ря это­му ты можешь, нап­ример, нас­тро­ить сис­темное окру­жение так, как ком­фор­тно имен­но тебе.

Что­бы ука­зывать на домаш­ний каталог, очень удоб­но исполь­зовать сим­вол ~ . Так, вмес­то / home/ vasya/ мож­но писать прос­то ~/ , если ты залоги­нен как vasya .

В Linux час­то встре­чает­ся то, что в Windows поп­росту невоз­можно: фай­лы, имя которых начина­ется с точ­ки (поль­зовате­ли вин­ды с неп­ривыч­ки дума­ют, буд­то это фай­лы без име­ни, име­ющие одно толь­ко рас­ширение). На самом деле в Linux так обоз­нача­ют скры­тые фай­лы. Нап­ример, имя . htacess говорит нам о том, что этот файл скры­тый, — бла­года­ря наличию точ­ки перед име­нем его лег­ко отли­чить от дру­гих фай­ловых объ­ектов.

В домаш­нем катало­ге поль­зовате­ля хра­нит­ся нес­коль­ко скры­тых фай­лов, которые могут быть очень полез­ны при работе в Linux. Что­бы прос­мотреть скры­тые фай­лы в текущем катало­ге, исполь­зуй кон­соль­ную коман­ду ls -a или поковы­ряй­ся в меню фай­лового менед­жера: нап­ример, в Nautilus пункт «Показать скры­тые фай­лы» пря­чет­ся в меню «Вид». Обра­ти вни­мание на сле­дующие скры­тые фай­лы:

  • . bash_profile — содер­жит информа­цию о поль­зователь­ском окру­жении и запус­каемых при авто­риза­ции поль­зовате­ля прог­раммах. В некото­рых дис­три­бути­вах, осно­ван­ных на Debian, дан­ного фай­ла по умол­чанию не сущес­тву­ет, но ты можешь соз­дать его самос­тоятель­но;
  • . bash_login — этот файл исполня­ется, если отсутс­тву­ет . bash_profile , и выпол­няет схо­жую фун­кцию. Это­го фай­ла не сущес­тву­ет по умол­чанию ни в дис­три­бути­ве Debian, ни в дис­три­бути­ве Red Hat;
  • . profile — выпол­няет­ся при отсутс­твии . bash_profile и . bash_login ;
  • . bash_logout — сце­нарий, который выпол­няет­ся авто­мати­чес­ки при завер­шении работы коман­дной обо­лоч­ки;
  • . bash_history — хра­нит информа­цию обо всех коман­дах, наб­ранных в bash;
  • . ssh — каталог, в котором хра­нят­ся клю­чи шиф­рования для под­клю­чения по SSH;
  • . bashrc — сце­нарий, который обыч­но нас­тра­ивает­ся дру­гими сце­нари­ями для сво­их собс­твен­ных нужд — нап­ример, запус­ка демонов или обра­бот­ки каких‑либо команд.
Необходимый минимум команд

Итак, запоми­най самые важ­ные коман­ды, если еще не зна­ешь их:

  • man — чуть ли не самая важ­ная коман­да — она отоб­ража­ет справ­ку о коман­де, наз­вание которой ты напишешь сле­дом;
  • ls (от сло­ва list, спи­сок) — перечис­лить все фай­лы в текущей дирек­тории, ана­лог вин­довой коман­ды dir . Самые важ­ные клю­чи: -a (all) — показы­вать скры­тые фай­лы, -l (long) — показы­вать под­робнос­ти, -h (human) — показы­вать раз­меры в «челове­чес­ких» еди­ницах, а не в бай­тах. Мож­но писать все клю­чи сра­зу: ls -lha ;
  • cd (change directory) — сме­нить дирек­торию. Даль­ше мож­но ука­зать пап­ку, в которую ты хочешь перей­ти;
  • pwd (print working directory) — узнать текущий путь;
  • cp (copy) — ско­пиро­вать файл. Даль­ше нуж­но ука­зать, что и куда копиро­вать;
  • mv (move) — перемес­тить файл. Тоже ука­зыва­ем какой, затем — куда;
  • rm (remove) — сте­реть файл. Если сти­раешь каталог, ука­зывай опцию -r (recursive), что­бы сте­реть все под­катало­ги внут­ри, под­катало­ги внут­ри них и так далее;
  • chmod и chown — поменять пра­ва на файл или вла­дель­ца фай­ла;
  • cat (concatenate) — при­дума­на, что­бы объ­еди­нять фай­лы, но час­то исполь­зует­ся, что­бы все­го лишь вывес­ти содер­жимое тек­сто­вого фай­ла. Прос­то напиши его наз­вание пос­ле cat ;
  • less — если файл длин­ный, то его удоб­но прок­ручивать. Для это­го и при­дума­на коман­да less ;
  • head и tail — с опци­ей -n число показы­вают сколь­ко‑то строк от начала ( head ) или кон­ца ( tail ) ука­зан­ного фай­ла;
  • grep — поиск в стро­ке по подс­тро­ке или регуляр­ному выраже­нию;
  • find — поиск фай­лов;
  • mkdir (make directory) — соз­дание дирек­тории;
  • touch — соз­дание пус­того фай­ла. Прос­то ука­жи его наз­вание;
  • sudo — выпол­нить сле­дующую далее коман­ду от име­ни супер­поль­зовате­ля;
  • df (disk free) — пос­мотреть, сколь­ко на дис­ках сво­бод­ного мес­та. Рекомен­дую писать df -h по ана­логии с ls -h ;
  • du (disk usage) — узнать, сколь­ко занима­ет каталог. Тоже есть опция -h ;
  • ps (processes) — пос­мотреть спи­сок запущен­ных тобой про­цес­сов и их иден­тифика­торы;
  • kill и иден­тифика­тор — завер­шить какой‑то про­цесс.

Нес­коль­ко важ­ных сетевых команд:

  • ping — попин­говать узел;
  • nslookup — узнать информа­цию об узле;
  • traceroute — прос­ледить путь пакетов до узла;
  • netstat — информа­ция об откры­тых пор­тах и соеди­нени­ях;
  • whois — информа­ция о регис­тра­ции домена.

По­мимо это­го, в Linux обыч­но есть нес­коль­ко ути­лит, которые силь­но облегчат тебе жизнь. Если их нет, то сто­ит их уста­новить:

  • git — популяр­ней­шая сис­тема кон­тро­ля вер­сий, как и ядро Linux, соз­данная Линусом Тор­валь­дсом;
  • nano — прос­тей­ший тек­сто­вый редак­тор, работа­ющий в тер­минале;
  • unzip и unrar — думаю, ты догады­ваешь­ся, зачем они нуж­ны;
  • curl нужен для веб‑зап­росов;
  • wget — для ска­чива­ния боль­ших фай­лов;
  • htop показы­вает уро­вень заг­рузки сис­темы и спи­сок про­цес­сов.

Важ­но: вый­ти из прог­рамм, которые не зак­рыва­ются сами, обыч­но мож­но, нажав Q. Прер­вать работу — Ctrl-C. А что­бы вый­ти из vim , если ты его открыл слу­чай­но, набери пос­ледова­тель­ность : q! и наж­ми Enter.

Ввод-вывод и пайпы

Боль­шинс­тво прог­рамм, работа­ющих из коман­дной стро­ки, при­нима­ют дан­ные на вход и что‑то выда­ют на выходе. При этом вывод одной прог­раммы мож­но нап­равить на ввод дру­гой и таким обра­зом дос­тичь какой‑то более слож­ной цели или авто­мати­зиро­вать какой‑то про­цесс. Давай раз­берем­ся под­робнее.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *